Configuring Logging

The content of the logging config file is passed along to the standard logging lib’s dictConfig method. Lighthouse does not verify the configuration itself, but the contents should conform to the dict config schema since that’s what the logging system expects.

Lighthouse does however provide two helper classes for logging: the CLIHandler and the ContextFilter.

As an example, this file sends logs to stdout with the CLIHandler attached, as well as to the local syslog system with added “program” context via the ContextFilter:

logging.yaml

version: 1
disable_existing_loggers: False
filters:
  context:
    "()": lighthouse.log.ContextFilter
formatters:
  syslog:
    format: 'lighthouse: [%(program)s] [%(threadName)s] %(message)s'
handlers:
  cli:
    class: 'lighthouse.log.cli.CLIHandler'
    stream: "ext://sys.stdout"
  syslog:
    class: 'logging.handlers.SysLogHandler'
    address: '/dev/log'
    facility: "local6"
    filters: ["context"]
    formatter: 'syslog'
root:
  handlers: ['syslog', 'cli']
  level: "DEBUG"
  propagate: true

ContextFilter

A simple logging.Filter subclass that adds a “program” attribute to any LogRecord`s that pass through it.  For the `lighthouse-writer script the attribute is set to “WRITER”, for lighthouse-reporter it is set to “REPORTER”.

Useful for differentiating log lines between the two scripts.

CLIHandler

Handy logging.StreamHandler subclass that colors the log lines based on the thread the log originated from and the level (e.g. “info”, “warning”, debug”, etc.)

Some example lines:

[2015-09-22 18:52:40 I][MainThread] Adding loggingconfig: 'logging'
[2015-09-22 18:52:40 D][MainThread] File created: /Users/william/local-config/balancers/haproxy.yml
[2015-09-22 18:52:40 I][MainThread] Adding balancer: 'haproxy'
[2015-09-22 18:52:40 I][Thread-3] Updating HAProxy config file.
[2015-09-22 18:52:40 D][MainThread] File created: /Users/william/local-config/discovery/zookeeper.yaml
[2015-09-22 18:52:40 D][Thread-3] Got HAProxy version: (1, 5, 10)
[2015-09-22 18:52:41 I][MainThread] Adding discovery: 'zookeeper'
[2015-09-22 18:52:41 D][Thread-3] Got HAProxy version: (1, 5, 10)
[2015-09-22 18:52:41 I][Thread-12] Connecting to zookeeper02.oregon.internal:2181
[2015-09-22 18:52:41 I][Thread-7] Updating HAProxy config file.
[2015-09-22 18:52:41 D][MainThread] File created: /Users/william/local-config/clusters/haproxy-web.yaml
[2015-09-22 18:52:41 I][Thread-3] Gracefully restarted HAProxy.
[2015-09-22 18:52:41 I][MainThread] Adding cluster: 'haproxy-web'