[Python-Dev] PEP282 and the warnings framework

holger krekel pyth@devel.trillke.net
Fri, 17 May 2002 18:37:02 +0200


Vinay Sajip wrote:
> [Steve]
> > I think your previous example showed that subject-level
> > filtering required a separate logger/channel per subject.
> > Is there another mechanism for subject tracking?
> 
> Yes, you can use Filters. Attach one or more Filter instances to the root
> logger and they can allow selective processing of certain events, based on
> any criteria you choose. The Filter implements a method which is called with
> a LogRecord. In my system, the LogRecord is analogous to what you term an
> Event.

this is an interesting point. LogRecord is the basic unit of the current logging.
But you can not pass customized (subclassed) LogRecords without them
beeing wrapped (read: contained) in another LogRecord instance. Thus
you have to e.g. access 'record.msg' in filters.  Why two instances 
where one is enough, more flexible and pretty straightforward? 

In addition you cannot currently do *early* filtering based 
on anything else than 'severity'. I find that strange considering
that the logging-api would hardly loose its convenience (warn/error/...)
if you made LogRecord or better logging.Event the basic working unit.
Early severity checking could still be done in these methods. The
log-method though should work with Events & subjects (and a default
factory if the first object isn't already an Event).

This is by no means a complete concept but i think it's worthwhile
to consider.

have fun,

    holger