gpt4 book ai didi

python - 两个 Pylons 记录器处理程序(Sentry/Raven 和控制台)用于相同的 qualname

转载 作者:行者123 更新时间:2023-11-30 23:34:06 26 4
gpt4 key购买 nike

我有一个 Pylons/TurboGears 应用程序。我想记录同一个记录器(由 qualname 属性指定)以使用两个不同的日志处理程序,每个处理程序都有自己的日志级别。

Sentry/Raven 记录器应该只接收 WARN+ 级别的 SQLAlchemy 消息,而控制台记录器应该接收 INFO+ 级别的 SQLAlchemy 消息。

这是我的缩写 ini 文件:

[loggers]
keys = root, sqlalchemy_console, sqlalchemy_sentry

[handlers]
keys = console, sentry

[formatters]
keys = generic

[logger_root]
level = INFO
handlers = console, sentry

[logger_sqlalchemy_console]
level = INFO
handlers = console
qualname = sqlalchemy.engine
propagate = 0

[logger_sqlalchemy_sentry]
level = WARN
handlers = sentry
qualname = sqlalchemy.engine
propagate = 0

但是,logger_sqlalchemy_sentry 似乎覆盖了 logger_sqlalchemy_console 并窃取了其消息。无论 ini 文件中记录器的顺序如何,都会发生这种情况。

是否可以使用 Pylons 将相同的记录器/限定名记录到不同级别的多个位置?

如果是这样,Sentry/Raven 是否有可能成为这些记录器之一?我的 ini 文件有问题吗,或者 Raven 中有错误吗?

最佳答案

您遇到的问题是您配置了 sqlalchemy.engine Logger 两次。记录器部分对应于 logging.Logger 的实例,即由 logging.getLogger(qualname) 返回的内容。该调用只能返回一个对象,您不可能使用相同的限定名设置多个对象。

您需要的是该记录器的多个处理程序,就像您为根记录器提供多个处理程序一样。然后,您可以在各个处理程序上指定所需的日志级别。

不幸的是,fileConfig() 并没有为您提供一种简单的方法来配置具有不同日志级别的相同处理程序,具体取决于发起记录的记录器,您需要设置重复的处理程序根记录器和 sqlalchemy.engine 记录器的部分,以便为它们提供不同的日志级别。

关于python - 两个 Pylons 记录器处理程序(Sentry/Raven 和控制台)用于相同的 qualname,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18404258/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com