I’m using Python’s logging module to log some debug strings to a file which works pretty well. Now in addition, I’d like to use this module to also print the strings out to stdout. How do I do this? In order to log my strings to a file I use following code:
import logging
import logging.handlers
logger = logging.getLogger("")
logger.setLevel(logging.DEBUG)
handler = logging.handlers.RotatingFileHandler(
LOGFILE, maxBytes=(1048576*5), backupCount=7
)
formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")
handler.setFormatter(formatter)
logger.addHandler(handler)
and then call a logger function like
logger.debug("I am written to the file")
Thank you for some help here!
Just get a handle to the root logger and add the
StreamHandler. TheStreamHandlerwrites to stderr. Not sure if you really need stdout over stderr, but this is what I use when I setup the Python logger and I also add theFileHandleras well. Then all my logs go to both places (which is what it sounds like you want).If you want to output to
stdoutinstead ofstderr, you just need to specify it to theStreamHandlerconstructor.You could also add a
Formatterto it so all your log lines have a common header.ie:
Prints to the format of: