2011-06-02 129 views
11

我有一個金字塔應用程序,我希望日誌得到stderr和stdout。 stdout應該是「INFO」級別和以下。 stderr應該是「WARN」並且更高。我如何改變我的.ini文件來做到這一點?金字塔日誌記錄

目前我正在記錄這樣,這是否被認爲是正確的方式?

log = logger.getLogger(__name__) 
log.info("update ...") 
log.error("MAYDAY MAYDAY... BOOM!!!")

目前我正在使用默認日誌記錄,這是。

 
[loggers] 
keys = root, app 

[handlers] 
keys = console 

[formatters] 
keys = generic 

[logger_root] 
level = WARN 
handlers = console 

[logger_app] 
level = WARN 
handlers = 
qualname = app 

[handler_console] 
class = StreamHandler 
args = (sys.stderr,)                               
85 level = NOTSET 
formatter = generic 

[formatter_generic] 
format = %(asctime)s %(levelname)-5.5s [%(name)s][%(threadName)s] %(message)s 

回答

10

您可以將多個處理程序添加到根,逗號分隔。如果你想過濾正常的「只接受高於這個日誌記錄級別的消息」標準(即只有調試消息),那麼你需要使用類似日誌記錄過濾器來接受/拒絕記錄基於它們的具體級別: http://docs.python.org/library/logging.html#filter-objects

您使用log = logging.getLogger(__name__)進行記錄的當前方法非常有效,並且是組織記錄層次結構的便捷方式。