金字塔日志记录

12 投票
1 回答
4909 浏览
提问于 2025-04-16 18:51

我有一个金字塔应用程序,我想把日志输出到标准错误和标准输出。标准输出应该显示“信息”(INFO)级别及以下的日志,而标准错误则显示“警告”(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

1 个回答

11

你可以在根目录添加多个处理器,用逗号分隔。如果你想要过滤信息,而不仅仅是按照“只接受这个日志级别以上的信息”的标准(比如只接受调试信息),那么你需要使用类似日志过滤器的东西,根据具体的级别来接受或拒绝记录。你可以查看这个链接了解更多:http://docs.python.org/library/logging.html#filter-objects

你现在使用的日志记录方法 log = logging.getLogger(__name__) 是完全有效的,这也是一种方便的方式来组织日志的层级结构。

撰写回答