The coloredlogs.ColoredStreamHandler class is a simple logging handler that
inherits from logging.StreamHandler and uses ANSI escape sequences to
render your logging messages in color. It uses only standard colors so it
should work on any UNIX terminal. Currently this module does not support
non-UNIX terminals (e.g. the Windows console). Here is a screenshot of the demo
that is printed when coloredlogs.py is executed directly:
Note that the screenshot above includes the custom logging level VERBOSE
defined by my verboselogs module: if you install both coloredlogs and
verboselogs it will Just Work (verboselogs is of course not
required to use coloredlogs).
The logging handler does not use ANSI escape sequences when output redirection applies (for example when the standard error stream is being redirected to a file or another program) so if you like the format (see below), you can use it for your log files as well.
As can be seen in the screenshot above, the logging handler includes four fields in every logged message by default:
- A timestamp indicating when the event was logged. This field is visible by
default. To hide it you can pass the keyword argument
show_timestamps=Falsewhen you create the handler. - The hostname of the system on which the event was logged. This field is
visible by default. To hide it you can pass the keyword argument
show_hostname=Falsewhen you create the handler. - The name of the logger that logged the event. This field is hidden by
default. To show it you can pass the keyword argument
show_name=Truewhen you create the handler. - The human friendly name of the log level / severity.
- The message that was logged.
Here's an example of how you would use the logging handler:
# Configure your logger.
import logging, coloredlogs
logger = logging.getLogger('your-module')
logger.addHandler(coloredlogs.ColoredStreamHandler())
# Some examples.
logger.setLevel(logging.DEBUG)
logger.debug("this is a debugging message")
logger.info("this is an informational message")
logger.warn("this is a warning message")
logger.error("this is an error message")
logger.fatal("this is a fatal message")
logger.critical("this is a critical message")
Although the logging handler was originally meant for interactive use, it can
also be used to generate log files. In this case the ANSI escape sequences are
not used so the log file will contain plain text and no colors. If you use Vim
and coloredlogs and would like to view your log files in color, you can try
the two Vim scripts included in the coloredlogs source distributions and
git repository:
The latest version of coloredlogs is available on PyPi and GitHub. For
bug reports please create an issue on GitHub. If you have questions,
suggestions, etc. feel free to send me an e-mail at peter@peterodding.com.
This software is licensed under the MIT license.
© 2013 Peter Odding.

