2011-06-02 82 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__)进行记录的当前方法非常有效,并且是组织记录层次结构的便捷方式。