aboutsummaryrefslogtreecommitdiffstats
path: root/miss_htbt_service/get_logger.py
diff options
context:
space:
mode:
authorSatoshi Fujii <fujii-satoshi@jp.fujitsu.com>2021-10-22 12:30:45 +0000
committerSatoshi Fujii <fujii-satoshi@jp.fujitsu.com>2021-10-22 12:58:05 +0000
commit8d7c0201456b7f9af6e91fea90354f4c3de323fe (patch)
tree522632565397508044ba2de89313616f3aa495a6 /miss_htbt_service/get_logger.py
parentc48b9767a6bcad91f89fc3fded0b6024e89525c0 (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.py42
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)