Skip to content

Instantly share code, notes, and snippets.

@njarvis
Created September 7, 2017 10:53
Show Gist options
  • Save njarvis/8e0ceac9738e11626984355384b2fb80 to your computer and use it in GitHub Desktop.
Save njarvis/8e0ceac9738e11626984355384b2fb80 to your computer and use it in GitHub Desktop.
Using coloredlogs.ColoredFormatter with logging.config.fileConfig
# -*- coding: utf-8 -*-
import coloredlogs
class ColoredFormatter(coloredlogs.ColoredFormatter):
def __init__(self, fmt=None, datefmt=None, style='%'):
'''Match coloredlogs.ColoredFormatter arguments with logging.Formatter'''
coloredlogs.ColoredFormatter.__init__(self, fmt=fmt, datefmt=datefmt)
[loggers]
keys=root
[logger_root]
level=DEBUG
handlers=console,logfile
[handlers]
keys=console,logfile
[handler_console]
class=StreamHandler
formatter=verbose_colored
args=(sys.stdout, )
level=DEBUG
[handler_logfile]
class=FileHandler
formatter=verbose
args=('log','a')
level=DEBUG
[formatters]
keys=verbose,verbose_colored,concise,concise_colored
[formatter_verbose]
class=logging.Formatter
format=[%(asctime)s.%(msecs)03d] [%(process)d/%(thread)s] [%(name)s.%(levelname)s] %(message)s
datefmt=%d/%b/%Y:%H:%M:%S
[formatter_verbose_colored]
class=coloredformatter.ColoredFormatter
format=[%(asctime)s.%(msecs)03d] [%(process)d/%(thread)s] [%(name)s.%(levelname)s] %(message)s
datefmt=%d/%b/%Y:%H:%M:%S
[formatter_concise]
class=logging.Formatter
format=[%(asctime)s] [%(name)s:%(levelname)s] %(message)s
[formatter_concise_colored]
class=coloredformatter.ColoredFormatter
format=[%(asctime)s] [%(name)s:%(levelname)s] %(message)s
# -*- coding: utf-8 -*-
import logging
logging.config.fileConfig('logging.conf')
logging.debug('I will be colored')
@njarvis
Copy link
Author

njarvis commented Sep 7, 2017

The coloredlogs.ColoredFormatter signature does not match logging.Formatter, which prevents it being used in a logging configuration file.

[formattter]
class=coloredlogs.ColoredFormatter

The helper class coloredformatter.ColorerFormatter shown above fixes up the arguments.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment