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

README.md

logging-config

💥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 http://docs.python.org/library/logging.config.html#logging-config-dictschema

Installation

logging-config is available via pypi.python.org. 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
---
loggers:
  pika:
    level: INFO
    propagate: True
  tinman:
    level: INFO
    propagate: True
  file:
    filename: /var/log/example.log
    class: logging.RotatingFileHandler
    mode: a
    maxBytes: 104857600
    backupCount: 6
    encoding: UTF-8
    delay: False
    formatter: verbose
filters:
  my_logger: my_app.*
formatters:
  verbose: "%(levelname) -10s %(asctime)s %(name) -30s %(funcName) -25s: %(message)s"
  syslog: "%(levelname)s <PID %(process)d:%(processName)s> %(name).%(funcName)s: %(message)s"
handlers:
  console:
    class: logging.StreamHandler
    formatter: verbose
    debug_only: True
    level: DEBUG
  syslog:
    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)
cfg.setup()
Something went wrong with that request. Please try again.