Currently, this is what I have (testlog.py
):
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 example.log
like so:
run with
logger.debug("test1")
-example.log
will containtest1
10 times like it should.run with
logger.debug("test2")
- it rewritesexample.log
to containtest2
10 times.etc...
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.
logging.handlers.RotatingFileHandler.doRollover(handler)
at the end – Tangramlogging
module that everything is so complicated. And, in this case, so un-obvious (no, one would not expect it on RotatingFileHandler's API). Upvoted, had same Q. Not to mention that I have dict/json-based logging setup, so now I need to figure out how to translate answers here to that format. grrr. – Whaling