Benjamin Drung b1bc7e1cdc Address pylint complaints
Signed-off-by: Benjamin Drung <benjamin.drung@canonical.com>
2023-01-30 23:10:31 +01:00

54 lines
1.9 KiB
Python

# -*- coding: utf-8 -*-
#
# Ubuntu Development Tools
# https://launchpad.net/ubuntu-dev-tools
import logging
import sys
def getLogger(): # pylint: disable=invalid-name
"""Get the logger instance for this module
Quick guide for using this or not: if you want to call ubuntutools
module code and have its output print to stdout/stderr ONLY, you can
use the logger this creates. You can also log directly to this logger
from your own code to send output to stdout/stderr.
This creates the ubuntutools module-level logger, and sets some default
values for formatting and levels, and directs INFO-level logs messages to
stdout and logs higher than INFO to stderr. The logger's level may be
adjusted to show more logs (e.g. DEBUG) or less (e.g. WARNING, to suppress
all INFO messages).
Without calling this module, the ubuntutools logs will propagate up to
higher level loggers (possibly the root logger) and be handled by them.
Note that the default for python logging is to print WARNING and above
logs to stderr.
Note if any code calls this method, the ubuntutools module-level logger
will no longer propagate ubuntutools log message up to higher level
loggers.
This should only be used by runnable scripts provided by the
ubuntu-dev-tools package, or other runnable scripts that want the behavior
described above.
"""
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)
logger.propagate = False
fmt = logging.Formatter("%(message)s")
stdout_handler = logging.StreamHandler(stream=sys.stdout)
stdout_handler.setFormatter(fmt)
stdout_handler.addFilter(lambda r: r.levelno <= logging.INFO)
logger.addHandler(stdout_handler)
stderr_handler = logging.StreamHandler(stream=sys.stderr)
stderr_handler.setFormatter(fmt)
stderr_handler.setLevel(logging.INFO + 1)
logger.addHandler(stderr_handler)
return logger