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