2016-04-26 51 views
0

在Python中不同输出的多个记录器所以我想在同一个模块同一模块

log = logging.getLogger('FirstLogger') 
plog = logging.getLogger('SecondLogger') 

中创建多个记录器,我想单独配置每个记录。

所以我为plog添加了一个FileHandler,只需要logging.INFO或更高版本,而FileHandler for log需要logging.DEBUG或更高版本。

我已经创建了一个init_logger()函数,它在记录器的实例上

def init_logger(logger, fmode, cmode) 

所以我想FirstLogger登录到我单独创建了它一个文件和日志与执行配置调试级别。我会做

log = logging.getLogger('FirstLogger') 
init_logger(log,logging.DEBUG,logging.INFO) 

plog = logging.getLogger('SecondLogger') 
init_logger(plog,logging.INFO,logging.INFO) 

在init_logger我指定的FileHandler不同的文件,并根据什么传递给init_logger设置的级别。

flog = logging.FileHandler(logfile) 
flog.setLevel(fmode) 
flog.setFormatter(...) 

console = logging.StreamHandler() 
console.setLevel(cmode) 
console.setFormatter(...) 

log.addhandler(flog) 
log.addHandler(console) 

我的问题是,即使“登录”有控制台设置级别信息和文件处理器为DEBUG我仍然只得到在文件和控制台都INFO。我无法弄清楚我在做什么是错的。

回答

1

您设置的文件处理程序DEBUG的水平,但你不记录器本身的级别设置为DEBUG

log.setLevel(min(cmode, fmode)) 
+0

感谢@Pedru。我确实忘了设置记录器本身的水平。 – pengwinsurf

+0

很高兴我能帮忙=) – Pedru

相关问题