Skip to content
A wrapper class for the Python standard logging module
Latest commit 4d7c309 May 17, 2016 @gmr Update
Failed to load latest commit information.
docs Docs additions Feb 24, 2012
tests Fix 2.5 and 2.6 support Feb 21, 2012
.gitignore Update May 17, 2016 Fix docstring paramter type for debug Apr 18, 2012 Fix docstring paramter type for debug Apr 18, 2012
test.yaml Initial Commit Feb 21, 2012


💥Important💥 This project is deprecated and no longer maintained. If you'd like to take it over, please contact me.

IMPORTANT After being pointed to logutils which has a working dictConfig for earlier versions of Python, I do not intend on maintaining this module.

A configuration wrapper class for the standard Python logging package. Since DictConfigurator is not available until 2.7 and I still need to support 2.6, I wanted a consistent way to handle configuration of application logging.

Currently, this module passes tests in Python 2.5, 2.6 and 2.7.

I've attempted to match the configuration dictionary schema as much as it makes sense to do so. For more information on the configuration dictionary schema check out


logging-config is available via Thus installation is as easy as:

pip install logging-config

Example Config

{'loggers': {'pika': {'propagate': True, 'level': 'INFO'},
             'tinman': {'propagate': True, 'level': 'INFO'}},
 'formatters': {'syslog': ('%(levelname)s <PID %(process)d:%(processName)s> '
                           '%(name).%(funcName)s: %(message)s'),
                'verbose': ('%(levelname) -10s %(asctime)s %(name) -30s '
                            '%(funcName) -25s: %(message)s')},
 'filters': None,
 'handlers': {'syslog': {'facility': 'local6',
                         'level': 'INFO',
                         'formatter': 'syslog',
                         'class': 'logging.handlers.SysLogHandler',
                         'address': '/var/run/syslog'},
              'console': {'formatter': 'verbose',
                          'debug_only': True,
                          'class': 'logging.StreamHandler',
                          'level': 'DEBUG'}}}

Example use

Given a yaml file "example.yaml":

%YAML 1.2
    level: INFO
    propagate: True
    level: INFO
    propagate: True
    filename: /var/log/example.log
    class: logging.RotatingFileHandler
    mode: a
    maxBytes: 104857600
    backupCount: 6
    encoding: UTF-8
    delay: False
    formatter: verbose
  my_logger: my_app.*
  verbose: "%(levelname) -10s %(asctime)s %(name) -30s %(funcName) -25s: %(message)s"
  syslog: "%(levelname)s <PID %(process)d:%(processName)s> %(name).%(funcName)s: %(message)s"
    class: logging.StreamHandler
    formatter: verbose
    debug_only: True
    level: DEBUG
    class: logging.handlers.SysLogHandler
    facility: local6
    address: /var/run/syslog
    filters: [my_logger]
    formatter: syslog
    level: INFO

The following code will setup the logging module with the specified handlers:

import logging_config
import yaml

with open('example.yaml', 'r') as handle:
    config = yaml.load(handle)

cfg = logging_config.Logging(config)
Something went wrong with that request. Please try again.