2014-04-01 177 views
0

我有以下的python日誌配置文件:配置日誌記錄級別在python

[loggers] 
keys=root 

[logger_root] 
handlers=screen,file 

[formatters] 
keys=simple,complex 

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

[formatter_complex] 
format=[%(asctime)s] %(levelname)s [%(name)s.%(funcName)s:%(lineno)d] %(message)s 

[handlers] 
keys=file,screen 

[handler_file] 
class=handlers.TimedRotatingFileHandler 
interval=midnight 
backupCount=5 
formatter=complex 
level=DEBUG 
args=('spartacus.log',) 

[handler_screen] 
class=StreamHandler 
formatter=complex 
level=DEBUG 
args=(sys.stdout,) 

運行下面的Python程序:

import logging.config 

logging.config.fileConfig("logging.conf") 
logging.debug("1") 
logging.info("2") 
logging.warn("3") 
logging.error("4") 
logging.critical("5") 

輸出是:

[2014-04-01 11:25:04,720] WARNING [root.<module>:11] 3 
[2014-04-01 11:25:04,720] ERROR [root.<module>:12] 4 
[2014-04-01 11:25:04,720] CRITICAL [root.<module>:13] 5 

哪裏是我的INFO和DEBUG級別的日誌條目?

回答

1

嘗試的根記錄級別設置爲DEBUG:

[logger_root] 
level=DEBUG 
handlers=screen,file 

從文檔:

注意根記錄器與級別警告

+0

你能解釋一下嗎?爲什麼文件處理程序的級別沒有任何影響? –

+1

根記錄器指定由子記錄器繼承的基本日誌記錄級別,並且*可以*被處理程序覆蓋;但只有在該級別高於與其關聯的記錄器時,纔會生效。因此,例如,如果根級別是DEBUG,但屏幕處理程序的級別設置爲WARN,則只能在控制檯上看到WARN或更高的消息。 – spinlok

0

創建試試這個記錄。 conf文件

[loggers] 
keys=root 

[logger_root] 
handlers=screen,file 
level=DEBUG 

[formatters] 
keys=simple,complex 

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

[formatter_complex] 
format=[%(asctime)s] %(levelname)s [%(name)s.%(funcName)s:%(lineno)d] %(message)s 

[handlers] 
keys=file,screen 

[handler_file] 
class=handlers.TimedRotatingFileHandler 
interval=midnight 
backupCount=5 
formatter=complex 
args=('spartacus.log',) 

[handler_screen] 
class=StreamHandler 
formatter=complex 
args=(sys.stdout,) 

您需要設置記錄器的級別。