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