Source code for munin.logutil

#!/usr/bin/env python
# encoding: utf-8


import logging
import logging.handlers

###########################################################################
#          Code taken from moosecat (shameless self-plagiatism)           #
###########################################################################

# Loggin related
COLORED_FORMAT = "%(asctime)s%(reset)s %(log_color)s{logsymbol} \
%(levelname)-8s%(reset)s %(bold_blue)s[%(filename)s:%(lineno)3d]%(reset)s \
%(bold_black)s%(name)s:%(reset)s %(message)s"

SIMPLE_FORMAT = "%(asctime)s %(levelname)-8s [%(filename)s:%(lineno)3d] \
%(name)s: %(message)s"

DATE_FORMAT = "%H:%M:%S"
UNICODE_ICONS = {
    logging.DEBUG: '⚙',
    logging.INFO: '⚐',
    logging.WARNING: '⚠',
    logging.ERROR: '⚡',
    logging.CRITICAL: '☠'
}


[docs]def create_logger(name=None, log_file=None, verbosity=logging.DEBUG): '''Create a new Logger configured with moosecat's defaults. :name: A user-define name that describes the logger :return: A new logger . ''' logger = logging.getLogger(name) # This is hack to see if this function was already called if len(logging.getLogger(None).handlers) is 2: return logger # Defaultformatter, used for File logging, # and for stdout if colorlog is not available formatter = logging.Formatter( SIMPLE_FORMAT, datefmt=DATE_FORMAT ) # Try to load the colored log and use it on success. # Else we'll use the SIMPLE_FORMAT try: import colorlog class SymbolFormatter(colorlog.ColoredFormatter): def format(self, record): result = colorlog.ColoredFormatter.format(self, record) return result.format(logsymbol=UNICODE_ICONS[record.levelno]) except ImportError: # Take the normal one instead. col_formatter = formatter else: col_formatter = SymbolFormatter( COLORED_FORMAT, datefmt=DATE_FORMAT, reset=False ) # Stdout-Handler stream = logging.StreamHandler() stream.setFormatter(col_formatter) if log_file is not None: # Rotating File-Handler file_stream = logging.handlers.RotatingFileHandler( filename=log_file, maxBytes=(1024 ** 2 * 10), # 10 MB backupCount=2, delay=True ) file_stream.setFormatter(formatter) logger.addHandler(file_stream) logger.addHandler(stream) logger.setLevel(verbosity) return logger
if __name__ == '__main__': logger = create_logger('Herbert', log_file='/tmp/munin.log') logger.debug('Hello, Im Herbert.') logger.info('I will be your logging guide for today.') logger.warning('You only need to call create_logger(None) for the root logger.') logger.error('Afterwards you can use logging.getLogger("module") to get loggers like me!') logger.critical("That's freaking cool, eh?")

Project Versions

This Page