How to create a new log file every time the application runs?
import logging.handlers import os filename = "example.log" # your logging setup should_roll_over = os.path.isfile(filename) handler = logging.handlers.RotatingFileHandler(filename, mode='w', backupCount=5) if should_roll_over: # log already exists, roll over! handler.doRollover() # the rest of your setup...
Should work like a charm.
Related videos on Youtube
practicemakesperfect over 1 year
Currently, this is what I have (
import logging import logging.handlers filename = "example.log" logger = logging.getLogger() logger.setLevel(logging.DEBUG) formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s") handler = logging.handlers.RotatingFileHandler(filename, mode = 'w', backupCount = 5) handler.setLevel(logging.DEBUG) handler.setFormatter(formatter) logger.addHandler(handler) ch = logging.StreamHandler() ch.setLevel(logging.DEBUG) ch.setFormatter(formatter) logger.addHandler(ch) for i in range(10): logger.debug("testx") #where I alternate x from 1 thru 9 to see output
It currently successfully prints out to the console and to
example.log, which is what I want.
Every time I run it, it makes a new file and replaces the old
test110 times like it should.
logger.debug("test2")- it rewrites
However, I would like for the code to make a new log file every time I run the program so that I have:
example.log example.log1 example.log2 ... example.log5
In conclusion, I'd like for this file to print the log message to the console, to the log file, and I would like a new log file (up to *.5) whenever I run the program.
practicemakesperfect over 6 yearsSOLVED! all I did was add
logging.handlers.RotatingFileHandler.doRollover(handler)at the end
zwer over 6 yearsDon't do it at the end - if your script fails mid-point end doesn't reach the end you won't be getting the new log file on the next start. Do it when initializing your logging.
ybonda about 3 yearsit creates empty log files on each run
Dman Cannon almost 3 yearsset
delay= True, it avoids creation of empty log files
Vrishank over 2 yearsHow do I add a timestamp instead of .log.1, .log.2 ?
zwer over 2 years@Vrishank
RotatingFileHandleruses the base filename to determine the rotated log name, you cannot set it to use timestamps or anything else except the
<base_name>.<n>for its rotated files. That being said, this being Python, you can always override the internals to have it do your bidding, you can check out one way to do it in this answer.
Andrei over 1 year@ybonda, it works for me if I remove mode = 'w' from RotatingFileHandler