2013-06-11 15 views
0

我使用Python 2.7.5 我創建與記錄器配置文件:蟒蛇記錄儀,唯一的錯誤是寫作

[loggers] 
keys=root,api 

[logger_root] 
handlers=screen,file 

[logger_api] 
handlers=fileapi 
qualname=api 

[formatters] 
keys=simple,complex 

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

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

[handlers] 
keys=file,screen,fileapi 

[handler_screen] 
class=StreamHandler 
formatter=simple 
level=NOTSET 
args=(sys.stdout,) 

[handler_file] 
class=handlers.TimedRotatingFileHandler 
interval=midnight 
backupCount=5 
formatter=complex 
level=NOTSET 
args=('/var/log/FMV/fmv.log',) 

[handler_fileapi] 
class=handlers.TimedRotatingFileHandler 
interval=midnight 
backupCount=5 
formatter=complex 
level=NOTSET 
args=('/var/log/FMV/fmv_api.log',) 

當我在我的代碼logger.info和等撥打:

_api_logger = logging.getLogger("api") 
_api_logger.info("/index was called") 
_api_logger.debug("/index was called") 
_api_logger.error("/index was called") 

在我的日誌文件(/var/log/FMV/fmv_api.log)我看到以下內容:

2013-06-12 01:17:55,599 - api - ERROR - api : 13 - /index was called 

因此,只有錯誤消息記錄日誌文件。 爲什麼它不會寫入所有消息到文件?

回答

0

的問題的解決,是添加以下代碼:

[logger_api] 
handlers=fileapi 
qualname=api 
level=DEBUG <--- Added 
1

Logger.setLevel(lvl) 將此記錄器的閾值設置爲lvl。記錄不如lvl嚴重的消息將被忽略。當創建記錄器時,級別設置爲NOTSET(當記錄器是根記錄器時會導致所有消息處理,或者當記錄器是非根記錄器時將其委派給父項)。請注意,根記錄器是使用級別WARNING創建的。

術語'授予父代'意味着如果記錄器具有NOTSET級別,則遍歷它的祖先記錄器鏈,直至找到具有非NOTSET級別的祖先,或者達到根。

http://docs.python.org/2/library/logging.html#logging.Logger.setLevel

+0

我已記錄水平在我的配置文件 - 水平= NOTSET。爲什麼它不起作用? – Vetalll

+0

@ Vetal.lebed你真的看過答案嗎? – kirelagin

+0

是的,我讀過它。但一個不能理解它。爲什麼當我從代碼設置級別 - 它的工作原理,當我從配置文件設置級別它不起作用? – Vetalll