/python-color-logger

A ColorizingStreamHandler forked from Vinay Sajip logutils: https://bitbucket.org/vinay.sajip/logutils/

Primary LanguagePythonOtherNOASSERTION

python-color-logger

Simple django-like color logging for your python project.

The original code for this project was written by Vinay Sajip and is hosted at: https://bitbucket.org/vinay.sajip/logutils/ the original documentation for this project is at: http://plumberjack.blogspot.co.uk/2010/12/colorizing-logging-output-in-terminals.html

pthon-color-logger forked this project at version 0.3.3 to add support for custom coloring in classses derived from ColorizingStreamHandler.

Install:

#####pip install python-color-logger

Example:

#!/usr/bin/env python
import logging
import logging.config

from logutils.colorize import ColorizingStreamHandler

class ColorHandler(ColorizingStreamHandler):
    def __init__(self, *args, **kwargs):
        super(ColorHandler, self).__init__(*args, **kwargs)
        self.level_map = {
                # Provide you custom coloring information here
                logging.DEBUG: (None, 'blue', False),
                logging.INFO: (None, 'green', False),
                logging.WARNING: (None, 'yellow', False),
                logging.ERROR: (None, 'red', False),
                logging.CRITICAL: ('red', 'white', True),
        }
CONFIG = {
    'version':1,
    'disable_existing_loggers': True,
    'handlers':{
        'console': {
            '()':ColorHandler,
            'info':'white',
            'level': 'DEBUG',
            'formatter': 'detailed',
            'stream': 'ext://sys.stdout',
        },
    },
    'formatters': {
        'detailed': {
            'format': '%(asctime)s %(module)s line:%(lineno)-4d %(levelname)-8s %(message)s',
        },
    },
    'loggers': {
        'info': {
            'level':'DEBUG',
            'handlers':['console'],
        },
    },
}

logging.config.dictConfig(CONFIG)
L = logging.getLogger('info')

L.debug("Hello world") # output should be in blue
L.info("Hello world") # output should be in green
L.warn("Hello world") # output should be in yellow
L.error("Hello world") # output should be in red
L.critical("Hello world") # output should be in white with a red back ground