summaryrefslogtreecommitdiff
path: root/src/mailman/core/logging.py
diff options
context:
space:
mode:
authorBarry Warsaw2014-11-02 14:55:10 -0500
committerBarry Warsaw2014-11-02 14:55:10 -0500
commitdfc451f81ccc8b0947fb3fa42e94c55026984cf8 (patch)
treec9834271a2dc7fd7d998e5dd211a0ef047f8085e /src/mailman/core/logging.py
parent0b1ee6fc8d224291c68c964a1af6b481921a13b3 (diff)
parent1d9f6970b9a26ee576838b53f485b96365e3a6c2 (diff)
downloadmailman-dfc451f81ccc8b0947fb3fa42e94c55026984cf8.tar.gz
mailman-dfc451f81ccc8b0947fb3fa42e94c55026984cf8.tar.zst
mailman-dfc451f81ccc8b0947fb3fa42e94c55026984cf8.zip
Diffstat (limited to 'src/mailman/core/logging.py')
-rw-r--r--src/mailman/core/logging.py53
1 files changed, 31 insertions, 22 deletions
diff --git a/src/mailman/core/logging.py b/src/mailman/core/logging.py
index 43030436a..c9285af92 100644
--- a/src/mailman/core/logging.py
+++ b/src/mailman/core/logging.py
@@ -32,7 +32,6 @@ import codecs
import logging
from lazr.config import as_boolean, as_log_level
-
from mailman.config import config
@@ -42,8 +41,7 @@ _handlers = {}
# XXX I would love to simplify things and use Python's WatchedFileHandler, but
# there are two problems. First, it's more difficult to handle the test
-# suite's need to reopen the file handler to a different path. Does
-# zope.testing's logger support fix this?
+# suite's need to reopen the file handler to a different path.
#
# The other problem is that WatchedFileHandler doesn't really easily support
# HUPing the process to reopen the log file. Now, maybe that's not a big deal
@@ -104,6 +102,27 @@ class ReopenableFileHandler(logging.Handler):
+def _init_logger(propagate, sub_name, log, logger_config):
+ # Get settings from log configuration file (or defaults).
+ log_format = logger_config.format
+ log_datefmt = logger_config.datefmt
+ # Propagation to the root logger is how we handle logging to stderr
+ # when the runners are not run as a subprocess of 'bin/mailman start'.
+ log.propagate = (as_boolean(logger_config.propagate)
+ if propagate is None else propagate)
+ # Set the logger's level.
+ log.setLevel(as_log_level(logger_config.level))
+ # Create a formatter for this logger, then a handler, and link the
+ # formatter to the handler.
+ formatter = logging.Formatter(fmt=log_format, datefmt=log_datefmt)
+ path_str = logger_config.path
+ path_abs = os.path.normpath(os.path.join(config.LOG_DIR, path_str))
+ handler = ReopenableFileHandler(sub_name, path_abs)
+ _handlers[sub_name] = handler
+ handler.setFormatter(formatter)
+ log.addHandler(handler)
+
+
def initialize(propagate=None):
"""Initialize all logs.
@@ -126,28 +145,18 @@ def initialize(propagate=None):
continue
if sub_name == 'locks':
log = logging.getLogger('flufl.lock')
+ if sub_name == 'database':
+ # Set both the SQLAlchemy and Alembic logs to the mailman.database
+ # log configuration, essentially ignoring the alembic.cfg settings.
+ # Do the SQLAlchemy one first, then let the Alembic one fall
+ # through to the common code path.
+ log = logging.getLogger('sqlalchemy')
+ _init_logger(propagate, sub_name, log, logger_config)
+ log = logging.getLogger('alembic')
else:
logger_name = 'mailman.' + sub_name
log = logging.getLogger(logger_name)
- # Get settings from log configuration file (or defaults).
- log_format = logger_config.format
- log_datefmt = logger_config.datefmt
- # Propagation to the root logger is how we handle logging to stderr
- # when the runners are not run as a subprocess of 'bin/mailman start'.
- log.propagate = (as_boolean(logger_config.propagate)
- if propagate is None else propagate)
- # Set the logger's level.
- log.setLevel(as_log_level(logger_config.level))
- # Create a formatter for this logger, then a handler, and link the
- # formatter to the handler.
- formatter = logging.Formatter(fmt=log_format, datefmt=log_datefmt)
- path_str = logger_config.path
- path_abs = os.path.normpath(os.path.join(config.LOG_DIR, path_str))
- handler = ReopenableFileHandler(sub_name, path_abs)
- _handlers[sub_name] = handler
- handler.setFormatter(formatter)
- log.addHandler(handler)
-
+ _init_logger(propagate, sub_name, log, logger_config)
def reopen():