试图处理logging.error

时间:2017-09-15 11:39:02

标签: python logging error-handling

有这部分代码:

import logging

logFormatter = logging.Formatter(u'#%(levelname)-8s [%(asctime)s] [LINE:%(lineno)d] %(filename)-8s  %(message)s',)
logger = logging.getLogger()
logger.setLevel(logging.INFO)

consoleHandler = logging.StreamHandler()
consoleHandler.setFormatter(logFormatter)

logger.addHandler(consoleHandler)

如何处理 logging.error 调用,例如保存登录数据库或执行其他操作

1 个答案:

答案 0 :(得分:1)

可能最简单的答案是使用多个处理程序,使用不同的日志记录级别进行设置。从logging docs开始,这是您要实现的目标的完美示例:

import logging

logger = logging.getLogger('simple_example')
logger.setLevel(logging.DEBUG)
# create file handler which logs even debug 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')

该示例为这些日志级别类型提供了DEBUGERROR级别处理程序格式。

也许另一种解决方案是切换到使用dictConfig来处理python logging模块配置。这将以dictionary类型的方式处理结构,您可以为level属性提供多个值。