On Mar 31, 12:58 pm, MRAB <goo...@mrabarnett.plus.com> wrote: > dj wrote: > > On Mar 30, 4:18 pm, Vinay Sajip <vinay_sa...@yahoo.co.uk> wrote: > >> On Mar 30, 4:13 pm, dj <d.a.aberna...@gmail.com> wrote: > > >>> I am trying to create a log level called userinfo for the pythonlogging. > >>> I read the source code and tried to register the level to > >>> theloggingnamespace with the following source: > >>> fromloggingimport Logger > >>> # create the custom log level > >>> class userinfo(Logger): > >>> def userinfo(self, msg, > >>> *args, **kwargs): > >>> if > >>> self.isEnabledFor(WARNING): > >>> self._log(WARNING, msg, args, **kwargs) > >>> # Register log level in thelogging.Logger > >>> namespace > >>> Logger.userinfo = userinfo > >>> Has I am sure you guessed, it did not work. If you know how this is > >>> done or know what I am doing work or can provide a link to example > >>> code (because I have not been able to locate any), I would greatly > >>> appreciate it. > >>> My sincere and heartfelt thanks in advance. > >> See the example script at > > >>http://dpaste.com/hold/21323/ > > >> which contains, amongst other things, an illustration of how to use > >> custom logging levels in an application. > > >> Regards, > > >> Vinay Sajip > > > I got the code setup, however, I still get an error for my custom log > > level. > > > ############################### Python code > > ####################################################### > > > import sys, logging > > > # log levels > > CRITICAL = 50 > > ERROR = 40 > > WARNING = 30 > > USERINFO =25 # my custom log level > > INFO = 20 > > DEBUG = 10 > > > # define the range > > LEVEL_RANGE = range(DEBUG, CRITICAL +1) > > > # level names > > > log_levels = { > > > CRITICAL : 'critical', > > ERROR : 'error', > > WARNING : 'warning', > > USERINFO : 'userinfo', > > INFO : 'info', > > DEBUG : 'debug', > > > } > > > # associate names with our levels. > > for lvl in log_levels.keys(): > > logging.addLevelName(lvl, log_levels[lvl]) > > > # setup a log instance > > logger = logging.getLogger('myLog') > > logger.setLevel(CRITICAL) > > hdlr = logging.StreamHandler() > > hdlr.setLevel(CRITICAL) > > logger.addHandler(hdlr) > > > # give it a try > > print 'write logs' > > logger.critical('this a critical log message') > > logger.userinfo('this is a userinfo log message') #call custom log > > level > > > ######################################### Output from my interpreter > > ################################################## > > > Python 2.6 (r26:66721, Oct 2 2008, 11:35:03) [MSC v.1500 32 bit > > (Intel)] > > Type "help", "copyright", "credits" or "license" for more information. > > Evaluating log_level_test.py > > write logs > > this a critical log message > > AttributeError: Logger instance has no attribute 'userinfo' > > > I would love to know what I am doing wrong. Thanks again for your > > help, it is really appreciated. > > I think that custom levels don't get their own method; you have to use: > > logger.log(USERINFO, 'this is a userinfo log message') > > although you could add it yourself with, say: > > setattr(logger, 'userinfo', lambda *args: logger.log(USERINFO, *args))
If it's not asking to much, could you show me how these would be used ? I tried on my own, but I keep getting errors. -- http://mail.python.org/mailman/listinfo/python-list