2016-04-26 62 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

相關問題