如何为单个日志处理程序设置不同的名称?

时间:2016-05-22 09:28:38

标签: python logging

我的代码中有两个日志处理程序:一个StreamHandlerINFO级别日志从同一个模块写入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,我只想打印自己模块的输出。

那么有没有办法让任何一个处理程序使用不同的名称?

1 个答案:

答案 0 :(得分:0)

基础name课程中有Handler个属性。我查看了Python源代码,看起来并没有在内部使用,因此您可以手动将每个处理程序设置为不同的名称。