diff options
author | Satoshi Fujii <fujii-satoshi@jp.fujitsu.com> | 2021-10-22 12:30:45 +0000 |
---|---|---|
committer | Satoshi Fujii <fujii-satoshi@jp.fujitsu.com> | 2021-10-22 12:58:05 +0000 |
commit | 8d7c0201456b7f9af6e91fea90354f4c3de323fe (patch) | |
tree | 522632565397508044ba2de89313616f3aa495a6 /miss_htbt_service/get_logger.py | |
parent | c48b9767a6bcad91f89fc3fded0b6024e89525c0 (diff) |
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 <fujii-satoshi@jp.fujitsu.com>
Issue-ID: DCAEGEN2-2941
Change-Id: If8bcb2308863d1395a2c547d2e7b746301665fb0
Diffstat (limited to 'miss_htbt_service/get_logger.py')
-rw-r--r-- | miss_htbt_service/get_logger.py | 42 |
1 files changed, 27 insertions, 15 deletions
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) |