Source code for ramutils.log

import logging
from logging.handlers import RotatingFileHandler
from os.path import expanduser

__all__ = [
    'RamutilsStreamHandler',
    'RamutilsFileHandler',
    'get_logger',
]


[docs]class RamutilsStreamHandler(logging.StreamHandler): """Custom stream handler used by ramutils loggers.""" _FORMAT = '[%(levelname)1.1s %(asctime)s %(filename)s:%(lineno)d] %(message)s' def __init__(self, *args, **kwargs): logging.StreamHandler.__init__(self, *args, **kwargs) formatter = logging.Formatter(fmt=self._FORMAT) self.setFormatter(formatter)
[docs]class RamutilsFileHandler(RotatingFileHandler): """Custom rotating file handler used by ramutils loggers. Parameters ---------- filename : str Base filename for logs. """ _FORMAT = '[%(levelname)1.1s %(asctime)s %(pathname)s:%(lineno)d]\n %(message)s' def __init__(self, filename): RotatingFileHandler.__init__(self, filename, 'a', maxBytes=10e6, backupCount=4) formatter = logging.Formatter(fmt=self._FORMAT) self.setFormatter(formatter)
[docs]def get_logger(name='ramutils'): """Returns a configured logger to be used throughout the ramutils package. :param str name: Name for the logger (default: ``'ramutils'``) """ logger = logging.getLogger(name) for handler in logger.handlers: if isinstance(handler, RamutilsStreamHandler): # Logging has already been configured return logger stream_handler = RamutilsStreamHandler() file_handler = RamutilsFileHandler(expanduser("~/.ramutils.log")) logger.addHandler(stream_handler) logger.addHandler(file_handler) logger.setLevel(logging.INFO) return logger