After reading the documentation on logging, I know I can use code like this to perform simple logging:
import logging
def main():
logging.basicConfig(filena
Try this
import logging
logger = logging.getLogger('simple_example')
logger.setLevel(logging.DEBUG)
# create file handler that logs debug and higher level messages
fh = logging.FileHandler('spam.log')
fh.setLevel(logging.DEBUG)
# create console handler with a higher log level
ch = logging.StreamHandler()
ch.setLevel(logging.ERROR)
# create formatter and add it to the handlers
formatter = logging.Formatter(
'%(asctime)s - %(name)s - %(levelname)s - %(message)s')
ch.setFormatter(formatter)
fh.setFormatter(formatter)
# add the handlers to logger
logger.addHandler(ch)
logger.addHandler(fh)
# 'application' code
logger.debug('debug message')
logger.info('info message')
logger.warn('warn message')
logger.error('error message')
logger.critical('critical message')
See http://docs.python.org/howto/logging-cookbook.html#multiple-handlers-and-formatters for more information
You have to create or use an existing subclass of logging.Handler
and call the setformatter()
method of an instance thereof with an instance of a custom subclass of logger.Formatter
. If you set the formatter for a handler that was already attached to the logger you want to modify the output of, you are fine, otherwise you have to retrieve a logger object with logging.getLogger()
and call its addHandler()
method with the instance of your handler class that you set the formatter on as the argument.