我试图了解在将basicConfig与多个处理程序一起使用时日志(log)记录模块的行为.
我的目标是在系统日志(log)消息上设置警告级别,并在日志(log)文件中设置调试级别.
这是我的设置:
import logging
import logging.handlers
import os
from datetime import datetime
log_format = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
f_handler = logging.FileHandler(f'{os.path.expanduser("~")}/logs/test_{datetime.now().strftime("%Y%m%d%H%M%S")}.log')
s_handler = logging.handlers.SysLogHandler(address='/dev/log')
f_handler.setLevel(logging.DEBUG)
s_handler.setLevel(logging.WARN)
f_handler.setFormatter(log_format)
s_handler.setFormatter(log_format)
logging.basicConfig(handlers=[f_handler, s_handler])
print (logging.getLogger().getEffectiveLevel())
logging.warning('This is a warning')
logging.error('This is an error')
logging.info('This is an info')
logging.debug('This is debug')
这不起作用-我的日志(log)文件只包含警告和错误消息,而不是预期的调试和信息消息.
如果我将此行更改为:
logging.basicConfig(handlers=[f_handler, s_handler], level=logging.DEBUG)
那么这似乎确实起作用了,即文件包含所有消息,而系统日志(log)仅包含错误和警告消息.
我不明白为什么原始代码不能工作,因为我专门设置了文件处理程序的级别.