Source code for apptools.logger.logger

# (C) Copyright 2005-2024 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")


[docs]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)
[docs]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