[Yum-devel] Using python's logging module

James Bowes jbowes at redhat.com
Mon Apr 24 20:30:22 UTC 2006

Hi all:

How would everyone feel about moving yum from using a custom logger 
implementation to using python's standard logging module[1, 2]?

The path I've been taking so far is to map yum's levels to logging's 
levels like so:

ERRORLOG:   0       0       CRITICAL
             1       1       CRITICAL
             2       2       ERROR
             3       3       ERROR

LOG:        1       4       WARN
             2       5       WARN
             3       6       INFO
             4       7       INFO
             5       8       INFO
             6       9       DEBUG
             7      10       DEBUG

Then in the configuration, CRITICAL and ERROR would go to stderr, and 
the others would go to stdout.

It would be possible to define additional logging levels to have a 
1-to-1 mapping from yum.logger to logging. Personally, I feel that five 
levels are enough.

The information sent to syslog and yum.log is pretty specific, so for 
that I've been using a specific log namespace (yum.syslog, for now). 
Everything sent to that logger would be sent to syslog and yum.log.

In the medium-term, it might be good to re-examine a lot of the 
information set to self.log, specifically in cli.py, output.py, and 
shell.py. Most of that output feels like extra detail for the 
command-line ui, and could be better off being dealt with by a system 
separate from logging. Then all logging information could be sent to stderr.

For configuration, a logging config file could live in yum's etc dir. 
Command-line options for -d -e would override it, of course.

Some rationale behind this:

- No need to maintain a distinct logging module in yum. Less code is good.
- Decouples objects. Each object can call logging.getLogger() instead of 
passing log objects around.
- Configuration can be done in the conf file rather than in code. Again, 
less code is good.
- Effectively completes the plugin TODO about logging. Users can simply 
modify their config file to send logging output wherever they choose.

So, what are everyone's thoughts?


[1] http://docs.python.org/lib/module-logging.html
[2] http://www.python.org/dev/peps/pep-0282/

More information about the Yum-devel mailing list