gpt4 book ai didi

Python 日志记录 : How can I determine when a handler was added?

转载 作者:行者123 更新时间:2023-12-01 00:59:30 25 4
gpt4 key购买 nike

有时,我有多个处理程序附加到给定的记录器,但我只想要一个,因为日志显示为重复行。

我想知道什么代码或模块实际添加了处理程序,以便我可以打开/关闭它们。

LogRecord 类有很多关于记录本身添加位置的信息,但是是否有关于何时添加处理程序的等效信息?

最佳答案

您可以对 Logger.addHandler 进行猴子修补方法,例如

def monkeypatch_logging():
import logging
add_handler_orig = logging.Logger.addHandler

def _addHandler(self, hdlr):
import traceback
traceback.print_stack()
add_handler_orig(self, hdlr)

logging.Logger.addHandler = _addHandler

将代码放在入口点附近的某个位置,以便它足够早地运行,例如

if __name__ == '__main__':
import logging
monkeypatch_logging()
logging.basicConfig(level=logging.INFO)
logging.info('hello world')

将输出:

  File "spam.py", line 18, in <module>
logging.basicConfig(level=logging.INFO)
File "/usr/lib64/python3.6/logging/__init__.py", line 1823, in basicConfig
root.addHandler(h)
File "spam.py", line 10, in _addHandler
traceback.print_stack()
INFO:root:hello world

堆栈跟踪将显示 Logger.addHandler 被调用的位置。

关于Python 日志记录 : How can I determine when a handler was added?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55926635/

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