1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
|
# (C) Copyright 2005-2025 Enthought, Inc., Austin, TX
# All rights reserved.
#
# This software is provided without warranty under the terms of the BSD
# license included in LICENSE.txt and may be redistributed only under
# the conditions described in the aforementioned license. The license
# is also available online at http://www.enthought.com/licenses/BSD.txt
#
# Thanks for using Enthought open source!
""" Convenience functions for creating logging handlers etc. """
# Standard library imports.
import logging
from logging.handlers import RotatingFileHandler
# Local imports.
from .log_queue_handler import LogQueueHandler
# The default logging level.
LEVEL = logging.DEBUG
# The default formatter.
FORMATTER = logging.Formatter("%(levelname)s|%(asctime)s|%(message)s")
class LogFileHandler(RotatingFileHandler):
"""The default log file handler."""
def __init__(
self,
path,
mode="a",
maxBytes=1000000,
backupCount=3,
level=None,
formatter=None,
encoding=None,
delay=False,
):
RotatingFileHandler.__init__(
self,
filename=path,
mode=mode,
maxBytes=maxBytes,
backupCount=backupCount,
encoding=encoding,
delay=delay,
)
if level is None:
level = LEVEL
if formatter is None:
formatter = FORMATTER
# Set our default formatter and log level.
self.setFormatter(formatter)
self.setLevel(level)
def add_log_queue_handler(logger, level=None, formatter=None):
"""Adds a queueing log handler to a logger."""
if level is None:
level = LEVEL
if formatter is None:
formatter = FORMATTER
# Add the handler to the root logger.
log_queue_handler = LogQueueHandler()
log_queue_handler.setLevel(level)
log_queue_handler.setFormatter(formatter)
logger.addHandler(log_queue_handler)
return log_queue_handler
|