mirror of
https://git.launchpad.net/ubuntu-dev-tools
synced 2025-03-12 15:41:09 +00:00
54 lines
1.9 KiB
Python
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
|