Skip to main content

Opinionated logging helpers

Project description

Some opinionated settings for python logging to allow for structured logging in your application.

Getting Started

There are three parts to the setup encouraged by this module:

The standard library

You are using the standard library to do your logging when you use this module

The logging context

Instead of giving strings to the standard library, you use this context object to give dictionaries instead.

The custom handlers

You use the setup_logging method to setup global handlers that either go to the terminal as key-value pairs, or to syslog as a dictionary.

The most basic example of usage would look something like:

#!/usr/bin/env python

from delfick_logging import lc, setup_logging
import logging

mylogger = logging.getLogger("mylogger")

if __name__ == "__main__":
    setup_logging()
    mylogger.info(lc("a message", arg=1, arg2={"more": "options"}, arg3="etc"))

Note that this module uses https://github.com/laysakura/rainbow_logging_handler to make your console logs colorful.

Installation

Just use pip:

$ pip install delfick_logging

The logging Context

The lc object is an instance of delfick_logging.logContext with no initial context.

You may create new lc objects with more context by using the using method.

For example:

from delfick_logging import lc
import logging

log = logging.getLogger("counting")

lc2 = lc.using(one=1, two=2)

log.info(lc2("counting is fun", three=2))

Will log out counting is fun\tone=1\ttwo=2\tthree=3 in console mode and {"msg": "counting is fun", "one": 1, "two": 2, "three": 3} in syslog mode.

When you use this method, you are not modifying the original lc object, but instead creating a new immutable copy.

Setting up the logging

The setup_logging method has the following arguments:

log

The log to add the handler to.

  • If this is a string we do logging.getLogger(log)

  • If this is None, we do logging.getLogger(“”)

  • Otherwise we use as is

level

The level we set the logging to. Defaults to logging.INFO

syslog

The syslog program name to use, this also turns on syslog logging instead of console logging. Defaults to not on.

syslog_address

The address to send syslog logs to. If this is a falsey value, then the default is used.

only_message

Whether to only print out the message when going to the console. Defaults to False

logging_handler_file

The file to go to when going to the console. Defaults to stderr

Different theme

The setup_logging function returns a handler, which you may pass into the delfick_logging.setup_logging_theme function to change the colours for INFO level messages:

from delfick_logging import setup_logging, setup_logging_theme

handler = setup_logging()
setup_logging_theme(handler, colors="dark")

There are currently two options: “light”, which is default; and “dark”.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

delfick_logging-0.2.3.tar.gz (3.9 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page