A new way to configure Python logging

Discussion in 'Python' started by Vinay Sajip, Oct 22, 2009.

  1. Vinay Sajip

    Vinay Sajip Guest

    If you use the logging package but don't like using the ConfigParser-based
    configuration files which it currently supports, keep reading. I'm proposing to
    provide a new way to configure logging, using a Python dictionary to hold
    configuration information. It means that you can convert a text file such as

    # logconf.yml: example logging configuration
    formatters:
    brief:
    format: '%(levelname)-8s: %(name)-15s: %(message)s'
    precise:
    format: '%(asctime)s %(name)-15s %(levelname)-8s %(message)s'
    handlers:
    console:
    class : logging.StreamHandler
    formatter : brief
    level : INFO
    stream : ext://sys.stdout
    file:
    class : logging.handlers.RotatingFileHandler
    formatter : precise
    filename : logconfig.log
    maxBytes : 1000000
    backupCount : 3
    email:
    class: logging.handlers.SMTPHandler
    mailhost: localhost
    fromaddr:
    toaddrs:
    -
    -
    subject: Houston, we have a problem.
    loggers:
    foo:
    level : ERROR
    handlers:
    bar.baz:
    level: WARNING
    root:
    level : DEBUG
    handlers : [console, file]
    # -- EOF --

    into a working configuration for logging. The above text is in YAML format, and
    can easily be read into a Python dict using PyYAML and the code

    import yaml; config = yaml.load(open('logconf.yml', 'r'))

    but if you're not using YAML, don't worry. You can use JSON, Python source code
    or any other method to construct a Python dict with the configuration
    information, then call the proposed new configuration API using code like

    import logging.config

    logging.config.dictConfig(config)

    to put the configuration into effect.

    For full details of the proposed change to logging, see PEP 391 at

    http://www.python.org/dev/peps/pep-0391/

    I need your feedback to make this feature as useful and as easy to use as
    possible. I'm particularly interested in your comments about the dictionary
    layout and how incremental logging configuration should work, but all feedback
    will be gratefully received. Once implemented, the configuration format will
    become subject to backward compatibility constraints and therefore hard to
    change, so get your comments and ideas in now!

    Thanks in advance,


    Vinay Sajip
    Vinay Sajip, Oct 22, 2009
    #1
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Stefan Siegl
    Replies:
    0
    Views:
    949
    Stefan Siegl
    Aug 27, 2003
  2. HS1
    Replies:
    0
    Views:
    454
  3. Vinay Sajip
    Replies:
    0
    Views:
    470
    Vinay Sajip
    Oct 24, 2009
  4. Holger K.

    howto configure logging via yaml

    Holger K., Dec 14, 2009, in forum: Ruby
    Replies:
    1
    Views:
    150
    Holger K.
    Dec 14, 2009
  5. Jeffrey Britton
    Replies:
    3
    Views:
    537
    Jeffrey Britton
    Apr 18, 2012
Loading...

Share This Page