Nice!  I will have to test this

On 8/9/07, Kent Johnson <[EMAIL PROTECTED]> wrote:
>
> jay wrote:
> > I have a working solution for this, based largely on what Kent posted.
> > Thought I would post it for others in case your either curious, or need
> > to do this in the future.  There are probably other ways to do this.
> >
> > It works quite nicely, though its a lot of repeated
> > code if you have to define several new levels.
>
> Here is a *completely untested off-the-top-of-my-head* rewrite for
> logging.addLevelName() that does this for you and saves having to repeat
> the function definitions. Maybe this could be used to create the
> standard logging functions too!
>
> def addLevelName(level, levelName):
>      """
>      Associate 'levelName' with 'level'.
>
>      This is used when converting levels to text during message
> formatting.
>      """
>      import logging
>      _acquireLock()
>      try:    #unlikely to cause an exception, but you never know...
>          _levelNames[level] = levelName
>          _levelNames[levelName] = level
>
>          lowerName = levelName.lower()
>
>          # define a new Logger function for the new level
>          # this is like existing info, critical, debug...etc
>          def Logger_func(self, msg, *args, **kwargs):
>              if self.manager.disable >= level:
>                  return
>              if level >= self.getEffectiveLevel():
>                  self._log(level, msg, args, **kwargs)
>
>          # Add the new function to the Logger class
>          setattr(logging.Logger, lowerName, Logger_func)
>
>          # define a new root level logging function
>          # this is like existing info, critical, debug...etc
>          def root_func(msg, *args, **kwargs):
>              if len(root.handlers) == 0:
>                  basicConfig()
>              Logger_func(root, (msg,)+args, kwargs)
>
>          # make the root level function known
>          setattr(logging, lowerName, root_func)
>
>      finally:
>          _releaseLock()
>
>
> Kent
>
_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to