Logging with Custom Levels not working

Didymus lynto28 at gmail.com
Wed Feb 18 08:49:17 EST 2015


Greetings,

    I've been setting up a custom logging for a project here and got some great examples of code from stackoverflow. The only problem I'm having is that no matter what I set the log level too all the messages print out...

Verbosity Level set to: 55
[PVERBOSE] Performance Verbose Level
[PDEBUG] Performance Debug Level
[PMESSAGE] Performance Message Level
[PWARNING] Performance Warning Level
[PERROR] Performance Error Level

    This should only print the PERROR level, but everything in the custom levels is being printed out. Not sure what I'm doing wrong here. Any help is greatly appreciated. We are use Python 2.7.5 .Example Code below:

   Thanks
      Tom

#!/usr/bin/python -tt

import logging

#
# Performance Custom Message Levels 'PERROR' : 55, 'PWARNING' : 54, 'PMESSAGE': 53, 'PDEBUG' : 52, 'PVERBOSE' : 51
#
PERROR_NUM   = 55
PWARNING_NUM = 54
PMESSAGE_NUM = 53
PDEBUG_NUM   = 52
PVERBOSE_NUM = 51


# Performance Error...
logging.addLevelName(PERROR_NUM, "PERROR")

def perror(self, message, *args, **kws):
    """ Performance Error Message Level """
    # Yes, logger takes its '*args' as 'args'.
    self._log(PERROR_NUM, message, args, **kws)
        
logging.Logger.perror = perror


# Performance Warning...
logging.addLevelName(PWARNING_NUM, "PWARNING")


def pwarning(self, message, *args, **kws):
    """ Performance Warning Message Level """
    # Yes, logger takes its '*args' as 'args'.
    self._log(PWARNING_NUM, message, args, **kws)
        
logging.Logger.pwarning = pwarning


# Performance Messages...
logging.addLevelName(PMESSAGE_NUM, "PMESSAGE")

def pmessage(self, message, *args, **kws):
    """ Performance Info/Message Level """
    # Yes, logger takes its '*args' as 'args'.
    self._log(PMESSAGE_NUM, message, args, **kws)
        
logging.Logger.pmessage = pmessage

# Performance Debug...
logging.addLevelName(PDEBUG_NUM, "PDEBUG")

def pdebug(self, message, *args, **kws):
    """ Performance Debug Message Level """
    # Yes, logger takes its '*args' as 'args'.
    self._log(PDEBUG_NUM, message, args, **kws)
        
logging.Logger.pdebug = pdebug

# Performance Verbose...
logging.addLevelName(PVERBOSE_NUM, "PVERBOSE")

def pverbose(self, message, *args, **kws):
    """ Performance Verbose Message Level """
    # Yes, logger takes its '*args' as 'args'.
    self._log(PVERBOSE_NUM, message, args, **kws)
        
logging.Logger.pverbose = pverbose

#
# Setup Logging.
#
def SetLogging(verbosity):
    """ Set logging file and level. """
    global rootLogger 
    logFormatter =  logging.Formatter("[%(levelname)s] %(message)s") # Output formatting for message (i.e. date/time, thread, line #, message level, message).
    rootLogger = logging.getLogger()
# Add a File to log too...      
    fileHandler = logging.FileHandler('/tmp/log.txt')
    fileHandler.setFormatter(logFormatter)
    rootLogger.addHandler(fileHandler)
# Put the message on the Console as well..      
    consoleHandler = logging.StreamHandler()
    consoleHandler.setFormatter(logFormatter)
    rootLogger.addHandler(consoleHandler)
# Set what the logging level should be: 
    level = logging.getLevelName(verbosity)                  # This turns the level into a number, which setLevel uses or logging.INFO for "verbosity" variable.
    rootLogger.setLevel(level) 							     # This can be DEBUG, INFO, WARN, ERROR or CRITICAL to control verbosity. Custom Levels: PVERBOSE (51), PDEBUG (52), PWARNING (53) or PERROR (54)
    print 'Verbosity Level set to: %s' % level


#
#
#
verbosity = 'PERROR'
SetLogging(verbosity)

rootLogger.pverbose('Performance Verbose Level')
rootLogger.pdebug('Performance Debug Level')
rootLogger.pmessage('Performance Message Level')
rootLogger.pwarning('Performance Warning Level')
rootLogger.perror('Performance Error Level')




More information about the Python-list mailing list