A new way to configure Python logging

Jean-Michel Pichavant jeanmichel at sequans.com
Fri Oct 23 13:27:11 EDT 2009


Vinay Sajip wrote:
> 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: my_app at domain.tld
>     toaddrs:
>       - support_team at domain.tld
>       - dev_team at domain.tld
>     subject: Houston, we have a problem.
> loggers:
>   foo:
>     level : ERROR
>     handlers: [email]
>   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
>
>
>   
For my part, I'm configuring the loggers in the application entry point 
file, in python code. I'm not sure I am that concerned. However being a 
great fan of this module, I kindly support you for any improvements you 
may add to this module and appreciate all the work you've already done 
so far.

Cheers,

Jean-Michel




More information about the Python-list mailing list