dj wrote:
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.

Have you read:

    http://www.python.org/doc/current/library/logging.html

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to