2017-09-16 43 views
2

我有什麼我認爲是一個非常基本的Python日誌記錄(v2.7.10),但我無法登錄到文件工作。記錄到stderr不是問題,但是當我試圖要求它寫入文件時,我所得到的只是一個空的日誌文件。Python通過ini記錄到文件創建空的日誌文件

這裏是我的配置log_config.ini文件:

[loggers] 
keys=root 

[handlers] 
keys=file_handler,stream_handler 

[formatters] 
keys=formatter 

[logger_root] 
level=DEBUG 
handlers=stream_handler 

[handler_stream_handler] 
class=StreamHandler 
level=WARNING 
formatter=formatter 
args=(sys.stderr,) 

[handler_file_handler] 
class=FileHandler 
level=DEBUG 
formatter=formatter 
args=('empty.log',) 

[formatter_formatter] 
format=%(asctime)-s %(name)s %(module)s %(funcName)s %(levelname)-8s %(message)s 
datefmt=%Y-%m-%d %H:%M:%S 

這裏是一個基本的測試Python腳本使用此ini文件:

import logging 
from logging import config 

log_config_ini = "log_config.ini" 
logging.config.fileConfig(log_config_ini) 

logger = logging.getLogger() 

logger.critical('This outputs just to the screen') 
logger.debug("This does not write to either screen (expected) nor file (unexpected)") 

注意,我可以改變像level的東西handler_stream_handler塊,一切都按預期工作,因此配置文件正在被正確讀取。

我也試過類似logging.config.fileConfig(log_config_ini, disable_existing_loggers = False)這樣的東西,但沒有任何東西可以改變,我只是得到一個空的'empty.log'文件。

我確定只有非常基本和愚蠢的東西會有所幫助,但我認爲我已經用盡了谷歌和Python文檔。任何幫助將不勝感激,提前謝謝!

回答

2

您需要添加file_handler至根記錄handlers在您的配置文件:

[logger_root] 
level=DEBUG 
handlers=stream_handler, file_handler 
+2

OH MY GOD,是的,謝謝!這工作完美。 – wolfpigeon