Colorlog

Introduction

The ColorLog Extension provides the ColorLogHandler for logging, and is a sub-class and drop-in replacement for the default log handler LoggingLogHandler.

Documentation References:

API References:

Requirements

  • Colorlog (pip install colorlog)

Configuration

This handler honors the following settings under a [log.colorlog] section of the configuration:

Setting

Description

level

The level to display logs for. One of INFO, WARNING, ERROR, FATAL, DEBUG. Default: INFO

file

The filesystem path of the log file. Default: None

to_console

Whether or not to log to console. Default: True

rotate

Whether or not rotate the log file. Default: False

max_bytes

Maximum file size (in bytes) until the log file is rotated (if rotation is enabled). Default: 512000

max_files

Maximum number of files to keep when rotating is enabled. Default: 4

colorize_file_log

Whether or not to colorize the log file. Default: False

colorize_console_log

Whether or not to colorize the console log. Default: True

Note that there are precautions in place to disable colorized logging if the session is not a valid TTY via sys.stdout.istty()

A sample config section might look like:

~/.myapp.conf
[log.colorlog]
file = /path/to/config/file
level = info
to_console = true
rotate = true
max_bytes = 512000
max_files = 4
colorize_file_log = false
colorize_console_log = true

Usage

Example: Using Colorlog Extension
from cement import App
class MyApp(App):
class Meta:
label = 'myapp'
extensions = ['colorlog']
log_handler = 'colorlog'
with MyApp() as app:
app.run()
app.log.debug('This is my debug message')
app.log.info('This is my info message')
app.log.warning('This is my warning message')
app.log.error('This is my error message')
app.log.fatal('This is my critical message')

The colors can be customized by passing in a colors dictionary mapping overriding the ColorLogHandler.Meta.colors option

Example: Customizing Colorlog Colors
from cement import App, init_defaults
META = init_defaults('log.colorlog')
META['log.colorlog']['colors'] = {
'DEBUG': 'cyan',
'INFO': 'green',
'WARNING': 'yellow',
'ERROR': 'red',
'CRITICAL': 'red,bg_white',
}
class MyApp(App):
class Meta:
label = 'myapp'
extension = ['colorlog']
log_handler = 'colorlog'
meta_defaults = META