rbackup/rbackup/logging.py
2019-11-08 01:27:36 -08:00

40 lines
1.2 KiB
Python

"""
.. moduleauthor:: Eric Torres
.. module:: rbackup.logging
:synopsis: library for common logging constants
"""
import logging
import sys
# ========== Constants ==========
# ----- Console Formatters -----
_CONSOLE_FORMAT = "==> %(levelname)s %(message)s"
CONSOLE_FORMATTER = logging.Formatter(_CONSOLE_FORMAT)
# ========== Functions ==========
def retrieve_console_handlers(*, debug=False):
"""Retrieve a pair of logging handlers configured for console output.
By default, logging.INFO messages are logged.
:param debug: should logging.DEBUG level messages be recorded? (default: ``False``)
:type debug: bool
:return: tuple of ``logging.StreamHandler``s for stdout and stderr
"""
stdout_handler = logging.StreamHandler(sys.stdout)
stdout_handler.setFormatter(CONSOLE_FORMATTER)
stdout_handler.addFilter(lambda record: record.levelno <= logging.INFO)
if debug:
stdout_handler.setLevel(logging.DEBUG)
else:
stdout_handler.setLevel(logging.INFO)
stderr_handler = logging.StreamHandler(sys.stderr)
stderr_handler.setLevel(logging.WARNING)
stderr_handler.setFormatter(CONSOLE_FORMATTER)
return stdout_handler, stderr_handler