Source code for pythiaplotter.utils.logging_config

"""Setup logging module here

We use a custom formatter which formats different severity levels differently.
"""


from __future__ import absolute_import
import logging


[docs]class LevelFormatter(logging.Formatter): """Custom message formatter for different severity levels Taken from: https://stackoverflow.com/questions/28635679/python-logging-different-formatters-for-the-same-log-file """ def __init__(self, fmt=None, datefmt=None, level_fmts=None): """ fmt is the default format. datefmt is the default format for dates. level_fmts is a dict where logging levels are the keys, and the corresponding values is a format string """ self._level_formatters = {} if level_fmts: for level, fmt_level in level_fmts.items(): # Could optionally support level names too self._level_formatters[level] = logging.Formatter(fmt=fmt_level, datefmt=datefmt) # self._fmt will be the default format super(LevelFormatter, self).__init__(fmt=fmt, datefmt=datefmt)
[docs] def format(self, record): if record.levelno in self._level_formatters: return self._level_formatters[record.levelno].format(record) return super(LevelFormatter, self).format(record)
formatter = LevelFormatter(fmt='%(message)s', level_fmts={logging.ERROR: '%(levelname)s: %(message)s', logging.WARNING: '%(levelname)s: %(message)s', logging.INFO: '%(message)s', logging.DEBUG: '%(module)s.%(funcName)s:%(lineno)d: %(message)s'}) console_handler = logging.StreamHandler() console_handler.setFormatter(formatter) root = logging.getLogger() root.addHandler(console_handler) root.setLevel(logging.INFO)
[docs]def get_logger(name): """Get a logger with a given name. Parameters ---------- name : str Returns ------- logging.Logger """ return logging.getLogger(name)