kedro.contrib.colors.logging.ColorHandler

class kedro.contrib.colors.logging.ColorHandler(stream=None, colors=None)[source]

Bases: logging.StreamHandler

A color log handler.

You can use this handler by incorporating the example below into your logging configuration:

conf/project/logging.yml:

formatters:
  simple:
    format: "%(asctime)s - %(name)s - %(levelname)s - %(message)s"

handlers:
  console:
    class: kedro.contrib.colors.logging.ColorHandler
    level: INFO
    formatter: simple
    stream: ext://sys.stdout
    # defining colors is optional
    colors:
      debug: white
      info: magenta
      warning: yellow

root:
  level: INFO
  handlers: [console]

The colors parameter is optional, and you can use any ANSI color.

  • Black
  • Red
  • Green
  • Yellow
  • Blue
  • Magenta
  • Cyan
  • White

The default colors are:

  • debug: magenta
  • info: cyan
  • warning: yellow
  • error: red
  • critical: red

Attributes

ColorHandler.name
ColorHandler.terminator

Methods

ColorHandler.__init__([stream, colors]) Initialize the handler.
ColorHandler.acquire() Acquire the I/O thread lock.
ColorHandler.addFilter(filter) Add the specified filter to this handler.
ColorHandler.close() Tidy up any resources used by the handler.
ColorHandler.createLock() Acquire a thread lock for serializing access to the underlying I/O.
ColorHandler.emit(record) Emit a record.
ColorHandler.filter(record) Determine if a record is loggable by consulting all the filters.
ColorHandler.flush() Flushes the stream.
ColorHandler.format(record) The handler formatter.
ColorHandler.get_name()
ColorHandler.handle(record) Conditionally emit the specified logging record.
ColorHandler.handleError(record) Handle errors which occur during an emit() call.
ColorHandler.release() Release the I/O thread lock.
ColorHandler.removeFilter(filter) Remove the specified filter from this handler.
ColorHandler.setFormatter(fmt) Set the formatter for this handler.
ColorHandler.setLevel(level) Set the logging level of this handler.
ColorHandler.set_name(name)
__init__(stream=None, colors=None)[source]

Initialize the handler.

If stream is not specified, sys.stderr is used.

acquire()

Acquire the I/O thread lock.

addFilter(filter)

Add the specified filter to this handler.

close()

Tidy up any resources used by the handler.

This version removes the handler from an internal map of handlers, _handlers, which is used for handler lookup by name. Subclasses should ensure that this gets called from overridden close() methods.

createLock()

Acquire a thread lock for serializing access to the underlying I/O.

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.

filter(record)

Determine if a record is loggable by consulting all the filters.

The default is to allow the record to be logged; any filter can veto this and the record is then dropped. Returns a zero value if a record is to be dropped, else non-zero.

Changed in version 3.2: Allow filters to be just callables.

flush()

Flushes the stream.

format(record)[source]

The handler formatter.

Parameters:record (LogRecord) – The record to format.
Return type:str
Returns:The record formatted as a string.
get_name()
handle(record)

Conditionally emit the specified logging record.

Emission depends on filters which may have been added to the handler. Wrap the actual emission of the record with acquisition/release of the I/O thread lock. Returns whether the filter passed the record for emission.

handleError(record)

Handle errors which occur during an emit() call.

This method should be called from handlers when an exception is encountered during an emit() call. If raiseExceptions is false, exceptions get silently ignored. This is what is mostly wanted for a logging system - most users will not care about errors in the logging system, they are more interested in application errors. You could, however, replace this with a custom handler if you wish. The record which was being processed is passed in to this method.

name
release()

Release the I/O thread lock.

removeFilter(filter)

Remove the specified filter from this handler.

setFormatter(fmt)

Set the formatter for this handler.

setLevel(level)

Set the logging level of this handler. level must be an int or a str.

set_name(name)
terminator = '\n'