Colorizing Console Streams

ColorizingStreamHandler is a handler which allows colorizing of console streams, described here in more detail.

class logutils.colorize.ColorizingStreamHandler(stream=None)

A stream handler which supports colorizing of console streams under Windows, Linux and Mac OS X.

Parameters:strm – The stream to colorize - typically sys.stdout or sys.stderr.
colorize(message, record)

Colorize a message for a logging event.

This implementation uses the level_map class attribute to map the LogRecord’s level to a colour/intensity setting, which is then applied to the whole message.

Parameters:
  • message – The message to colorize.
  • record – The LogRecord for the message.
emit(record)

Emit a record.

If a formatter is specified, it is used to format the record. The record is then written to the stream with a trailing newline. If exception information is present, it is formatted using traceback.print_exception and appended to the stream. If the stream has an ‘encoding’ attribute, it is used to determine how to do the output to the stream.

format(record)

Formats a record for output.

This implementation colorizes the message line, but leaves any traceback unolorized.

is_tty

Returns true if the handler’s stream is a terminal.

level_map = {10: (None, 'blue', False), 20: (None, 'black', False), 30: (None, 'yellow', False), 40: (None, 'red', False), 50: ('red', 'white', True)}

Maps levels to colour/intensity settings.

output_colorized(message)

Output a colorized message.

On Linux and Mac OS X, this method just writes the already-colorized message to the stream, since on these platforms console streams accept ANSI escape sequences for colorization. On Windows, this handler implements a subset of ANSI escape sequence handling by parsing the message, extracting the sequences and making Win32 API calls to colorize the output.

Parameters:message – The message to colorize and output.