From f11323d992098ad43393170ee44501a5eb1f4f4f Mon Sep 17 00:00:00 2001 From: Pavel Raiskup Date: Dec 16 2019 17:13:00 +0000 Subject: backend: put PID to log output, and add log_format option In #987 we are loosing the processes' log outputs in the middle of worker execution, without being sure the process really ended or not. Sometimes it would be nice to check that the process really doesn't exist so we need to be able to identify it. Relates: #987 --- diff --git a/backend/backend/constants.py b/backend/backend/constants.py index f5afc0c..15a0258 100644 --- a/backend/backend/constants.py +++ b/backend/backend/constants.py @@ -38,6 +38,6 @@ class BuildStatus(object): LOG_PUB_SUB = "copr:backend:log:pubsub::" default_log_format = Formatter( - '[%(asctime)s][%(levelname)6s][%(name)10s][%(filename)s:%(funcName)s:%(lineno)d] %(message)s') + '[%(asctime)s][%(levelname)6s][PID:%(process)d][%(name)10s][%(filename)s:%(funcName)s:%(lineno)d] %(message)s') build_log_format = Formatter( '[%(asctime)s][%(levelname)6s][PID:%(process)d] %(message)s') diff --git a/backend/backend/daemons/log.py b/backend/backend/daemons/log.py index 707f22b..d6a6e0d 100644 --- a/backend/backend/daemons/log.py +++ b/backend/backend/daemons/log.py @@ -11,7 +11,6 @@ from setproctitle import setproctitle # TODO: remove when RedisLogHandler works fine from .. import constants from .. import helpers -from ..constants import default_log_format class RedisLogHandler(object): @@ -35,7 +34,7 @@ class RedisLogHandler(object): self.main_logger = logging.Logger("logger", level=logging.DEBUG) self.main_handler = logging.handlers.WatchedFileHandler( filename=os.path.join(self.log_dir, "logger.log")) - self.main_handler.setFormatter(default_log_format) + self.main_handler.setFormatter(self.opts.log_format) self.main_logger.addHandler(self.main_handler) level = getattr(logging, self.opts.log_level.upper(), None) @@ -45,7 +44,7 @@ class RedisLogHandler(object): logger = logging.Logger(component) handler = logging.handlers.WatchedFileHandler( filename=os.path.join(self.log_dir, "{}.log".format(component))) - handler.setFormatter(default_log_format) + handler.setFormatter(self.opts.log_format) handler.setLevel(level) logger.addHandler(handler) self.loggers[component] = logger diff --git a/backend/backend/helpers.py b/backend/backend/helpers.py index 9e1b4bb..1cb7b8e 100644 --- a/backend/backend/helpers.py +++ b/backend/backend/helpers.py @@ -277,6 +277,8 @@ class BackendConfigReader(object): cp, "backend", "log_dir", "/var/log/copr-backend/") opts.log_level = _get_conf( cp, "backend", "log_level", "info") + opts.log_format = _get_conf( + cp, "backend", "log_format", default_log_format) opts.verbose = _get_conf( cp, "backend", "verbose", False, mode="bool") diff --git a/backend/conf/copr-be.conf.example b/backend/conf/copr-be.conf.example index 2bf036e..775ac0d 100644 --- a/backend/conf/copr-be.conf.example +++ b/backend/conf/copr-be.conf.example @@ -82,6 +82,7 @@ prune_days=14 # logging settings # log_dir=/var/log/copr-backend/ # log_level=info +# log_format=[%(asctime)s][%(levelname)6s][PID:%(process)d][%(name)10s][%(filename)s:%(funcName)s:%(lineno)d] %(message)s # verbose=False