From 8d7c0201456b7f9af6e91fea90354f4c3de323fe Mon Sep 17 00:00:00 2001 From: Satoshi Fujii Date: Fri, 22 Oct 2021 12:30:45 +0000 Subject: Fix log rotation issue Writing log to a single file from multiple processes is not supported by python logging. It causes making fragmented log files at log rotation and logs are mixed up. This change is to use different log files for each sub-process to help developers check log for a specific process easily. This change does not affect to pod log (stdout log). Signed-off-by: Satoshi Fujii Issue-ID: DCAEGEN2-2941 Change-Id: If8bcb2308863d1395a2c547d2e7b746301665fb0 --- miss_htbt_service/get_logger.py | 42 ++++++++++++++++++++++++++--------------- 1 file changed, 27 insertions(+), 15 deletions(-) (limited to 'miss_htbt_service/get_logger.py') diff --git a/miss_htbt_service/get_logger.py b/miss_htbt_service/get_logger.py index c58a945..55286eb 100644 --- a/miss_htbt_service/get_logger.py +++ b/miss_htbt_service/get_logger.py @@ -17,20 +17,32 @@ import logging.handlers -'''Configures the module root logger''' -root = logging.getLogger() -if root.handlers: - del root.handlers[:] -formatter = logging.Formatter('%(asctime)s | %(name)s | %(module)s | %(funcName)s | %(lineno)d | %(levelname)s | %(message)s') -handler = logging.StreamHandler() -handler.setFormatter(formatter) -root.addHandler(handler) -fhandler = logging.handlers.RotatingFileHandler('./hb_logs.txt', maxBytes=(1048576 * 5), backupCount=10) -fhandler.setFormatter(formatter) -root.addHandler(fhandler) -root.setLevel("DEBUG") +LOG_LEVEL = logging.DEBUG +LOG_FORMAT = '%(asctime)s | %(levelname)5s | %(name)s | %(module)s | %(funcName)s | %(lineno)d | %(message)s' +LOG_MAXSIZE = 10485760 * 5 +LOG_BACKUP_COUNT = 10 -def get_logger(module=None): - '''Returns a module-specific logger or global logger if the module is None''' - return root if module is None else root.getChild(module) +def configure_logger(proc_name: str) -> None: + """Configures the module root logger""" + + # Clear handlers + root = logging.getLogger() + if root.handlers: + del root.handlers[:] + + # Add stdout handler + formatter = logging.Formatter(LOG_FORMAT) + handler = logging.StreamHandler() + handler.setFormatter(formatter) + root.addHandler(handler) + + # Add rotating log file handler + if proc_name: + logfile_path = './hb_%s_logs.txt' % proc_name + else: + logfile_path = './hb_logs.txt' + fhandler = logging.handlers.RotatingFileHandler(logfile_path, maxBytes=LOG_MAXSIZE, backupCount=LOG_BACKUP_COUNT) + fhandler.setFormatter(formatter) + root.addHandler(fhandler) + root.setLevel(LOG_LEVEL) -- cgit 1.2.3-korg