2013-05-11 107 views
1

我從文件加載我的日誌記錄配置。下面的日誌文件給出:Python日誌記錄不工作

[loggers] 
keys=root 

[handlers] 
keys=consoleHandler,fileHandler 

[formatters] 
keys=simpleFormatter 

[logger_root] 
level=DEBUG 
handlers=consoleHandler,fileHandler 

[handler_consoleHandler] 
class=StreamHandler 
level=INFO 
formatter=simpleFormatter 
args=(sys.stderr,) 

[handler_fileHandler] 
class=FileHandler 
level=DEBUG 
formatter=simpleFormatter 
args=('../output.log','w') 

[formatter_simpleFormatter] 
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s 
datefmt= 

我創建使用記錄器:

_logger = logging.getLogger(__name__) 
logging.config.fileConfig('../logging.conf') 

不過,我沒有看到任何日誌輸出,當我運行我的程序。如果我爲我的主模塊添加單獨的記錄器,則記錄按預期工作。但是像這樣設置它不起作用。我究竟做錯了什麼?

+0

你的日誌文件的名字是什麼? – HennyH 2013-05-11 00:38:17

+0

@HennyH添加了聲明以顯示我如何加載配置文件。 – 2013-05-11 12:49:40

回答

1

您需要將配置後的日誌記錄創建。調用logging.fileConfig將禁用預先存在的記錄器,這就是您的記錄器不工作的原因。

+0

或者設置關鍵字參數'disable_existing_loggers = False'。 – DX2003 2013-05-23 20:41:53

+0

這個!謝謝。 – 2013-05-24 02:13:52

1

通過創建日誌文件,像這樣:

_logger = logging.getLogger(__name__) 

它會尋找與的__main__的價值,你的主要模塊將具有等於"__main__"名稱的文件。但是,您導入的其他模塊將具有__name__等於模塊的模塊名稱

+0

@TokenMacGuy絕對正確,修正! – HennyH 2013-05-11 01:44:53

+0

這不是我如何創建日誌文件。這就是我創建記錄器的方式。並且我編輯了我的帖子以顯示我如何加載滯後的配置文件。 – 2013-05-11 12:49:14

+0

無論如何,不​​應該通過__main__記錄器將消息轉發給根記錄器嗎?他們爲什麼不被輸出? – 2013-05-11 12:51:13