代码例子如下:
logger = logging.getLogger("simple_example")
logger.setLevel(logging.DEBUG)
# logger的setLevel是最根本的
fh = logging.FileHandler("out_project_ttt.log")
# 如果没有这个,就不会输出到文件
fh.setLevel(logging.INFO)
ch = logging.StreamHandler()
ch.setLevel(logging.INFO)
formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")
ch.setFormatter(formatter)
fh.setFormatter(formatter)
logger.addHandler(ch)
logger.addHandler(fh)
logger.debug('debug')
logger.info('info')
logger.warning('waring')
logger.error('error')
logger.critical('critical ')
总结一下。
python的 logger提供了更好的接口。可以通过FileHander和StreamHandler分别制定向文件和屏幕输出。
logger.setLevel 是最根本的,它掌管了处理哪些日志。如果这里设置成了warn(默认),fh和ch设置更低级别的level(info,debug等),也不起作用了。
设定了logger的level之后fh.setLevel和ch.setLevel可以设定更高的级别。
举个典型的例子:logger设置为INFO,fh设置为ERROR,ch设置为DEBUG,那么屏幕上不会输出DEBUG日志,而fh不会记录INFO日志。