我的代码中有两个日志处理程序:一个StreamHandler
将INFO
级别日志从同一个模块写入stdout,另一个FileHandler
写入更详细的DEBUG
记录到文件。这是我的代码:
import sys
import logging
log = logging.getLogger('mymodule')
log.setLevel(logging.DEBUG)
logf = logging.FileHandler('file.log')
logf.setFormatter(logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s'))
log.addHandler(logf)
logs = logging.StreamHandler(sys.stdout)
logs.setLevel(logging.INFO)
logs.setFormatter(logging.Formatter('%(asctime)s - %(levelname)s - %(message)s'))
log.addHandler(logs)
但是,我希望FileHandler
也可以从其他模块中编写DEBUG
个信息。如果我从logging.getLogger()
删除名称,我可以实现此目的,但这也会影响我的StreamHandler
,我只想打印自己模块的输出。
那么有没有办法让任何一个处理程序使用不同的名称?
答案 0 :(得分:0)
基础name
课程中有Handler
个属性。我查看了Python源代码,看起来并没有在内部使用,因此您可以手动将每个处理程序设置为不同的名称。