Source code for stems.logging_

"""Some sensible defaults for logging

Designed for applications or interactive use -- not importing in library code.
The 'stems' logger is setup for library use with a NullHandler in
``stems/__init__.py``.
"""
import logging

DEFAULT_LOG_FORMAT = ' '.join(
    ('%(asctime)s',
     '%(levelname)s',
     '%(lineno)s',
     '%(module)s.%(funcName)s',
     '%(message)s', )
)
DEFAULT_LOG_DATE_FORMAT = '%H:%M:%S'


[docs]def setup_logger(logger='stems', fmt=DEFAULT_LOG_FORMAT, datefmt=DEFAULT_LOG_DATE_FORMAT, level=logging.INFO, handler=None, replace_handler=True): """ Setup and return a logger with formatter and handler Parameters ---------- logger : logging.Logger or str, optional Logger, or name of logger to use fmt : str, optional Format string for ``logging.Formatter`` datefmt : str, optional Date format string for ``logging.Formatter`` level : int or str, optional Level for logging passed to ``logging.Logger.setLevel`` handler : logging.Handler or None, optional Specify a handler to use. Defaults to a newly created ``logging.StreamHandler``. replace_handler : bool, optional Replace all existing handlers (otherwise appends handler) Returns ------- logging.Logger Configured logger """ formatter = logging.Formatter(fmt, datefmt) handler = handler or logging.StreamHandler() handler.setFormatter(formatter) if not isinstance(logger, logging.Logger): logger = logging.getLogger(logger) if replace_handler: logger.handlers = [handler] else: logger.addHandler(handler) logger.setLevel(level) return logger