Hi all,
Need help with below query on python logging module.
I have a main process which makes use of different other modules. And these
modules also use other modules. I need to log all the logs into single log
file. Due to use of TimedRotatingFileHandler, my log behaves differently after
midnight. I got to know why it is so but couldn't get how I can solve it.
Issue was because of serialization in logging when multiple processes are
involved.
Below is log_config.py which is used by all other modules to get the logger and
log.
import logging
import sys
from logging.handlers import TimedRotatingFileHandler
FORMATTER = logging.Formatter("%(asctime)s — %(name)s — %(message)s")
LOG_FILE = "my_app.log"
def get_file_handler():
file_handler = TimedRotatingFileHandler(LOG_FILE, when='midnight')
file_handler.setFormatter(FORMATTER)
return file_handler
def get_logger(logger_name):
logger = logging.getLogger(logger_name)
logger.setLevel(logging.DEBUG) # better to have too much log than not enough
logger.addHandler(get_file_handler())
#with this pattern, it's rarely necessary to propagate the error up to parent
logger.propagate = False
return logger
All other modules call, 'logging = log_config.get_logger(name)' and use it to
log.
I came to know about QueueHandler and QueueListener but not sure how to use
them in my code. How can I use these to serialize logs to single file.?
Any help is appreciated.
Thanks,
Chethan
--
https://mail.python.org/mailman/listinfo/python-list