Kent,

Thanks for the suggestion.  If will look more into your suggestions, and
also shoot a post over to comp.lang.python.

Jay

On 8/9/07, Kent Johnson <[EMAIL PROTECTED]> wrote:
>
> jay wrote:
> > Hello,
> >
> > I've been using the python logging module a lot lately, and I've come
> > across an instance where I need some new levels.  Specifically, python
> > does not include ALERT and NOTICE in the default set of logging levels.
> > I am wondering how trivial it would be to extend the logging module to
> > include these 2 levels that are standard with syslog?
> >
> > My first test was just to use the addLevelName method to add the two new
> > levels, but syslog ignores them and logs at the next highest priority,
> > no matter what I use.
> >
> > Looking further into the code and as a test, I changed the following to
> > see if this would even work
> >
> > lib/python2.5/logging/__init__.py
> >   -> class Logger
> >   -> add new notice and alert root level functions
> >   -> new _levelNames for notice and alert
> >   -> new default level names for notice and alert
>
> You could do all this by patching the logging module at runtime:
> import logging
> logging.ALERT = 60
> logging.addLevelName(logging.ALERT, 'ALERT')
>
> def Logger_alert(self, msg, *args, **kwargs):
>   ...
>
> logging.Logger.alert = Logger_alert
>
> def alert(msg, *args, **kwargs):
>    ...
>
> logging.alert = alert
>
> It's a little ugly but since you are just extending the module with new
> constants and functions it seems pretty safe and clean to me. It would
> be cool if addLevelName() did all this patching for you, it wouldn't be
> hard to do...maybe you want to propose a patch...
>
> > lib/python2.5/logging/handlers.py
> >   -> class SysLogHandler priority_map was changed to include notice and
> > alert
>
> You can do this by subclassing SysLogHandler:
>
> class FixedSysLogHandler(SysLogHandler):
>    priority_map = { ... }
>
> then configure logging to use FixedSysLogHandler instead of SysLogHandler.
>
>
> You might want to post about this on comp.lang.python , I think the
> author of the logging module will see it there.
>
> Kent
>
_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to