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

Reply via email to