gpt4 book ai didi

带有回调函数的 Python 记录器

转载 作者:行者123 更新时间:2023-12-03 16:24:01 35 4
gpt4 key购买 nike

有没有办法配置 python 记录器来调用自定义函数并在它记录时将记录消息传递给它?
谢谢!

最佳答案

子类 logging.Handler 并实现 emit方法:

import logging

class MyHandler(logging.Handler):
def emit(self, record):
print('custom handler called with\n ', record)

logger = logging.getLogger(__name__)
logger.addHandler(MyHandler()) # or: logger.handlers = [MyHandler()]
logger.warning('Log 1')
logger.warning('Log 2')
custom handler called with
<LogRecord: __main__, 30, /home/jan/Dropbox/py/so_logging.py, 9, "Log 1">
custom handler called with
<LogRecord: __main__, 30, /home/jan/Dropbox/py/so_logging.py, 10, "Log 2">
正在记录的特定消息可以通过 record.msg 访问。 (未格式化的字符串)或 self.format(record) (格式化字符串,以防您添加了时间戳或日志级别)
另外:如果您还覆盖了 logging.Handler__init__方法,重要的是在子类中对其进行 super 调用。
logging 的标准警告模块适用:
  • 默认日志级别为 WARNING(因此 DEBUG/INFO 不会传递给 emit)
  • 日志记录被传递给记录器的所有处理程序
  • 之后,它在 logging hierarchy 中传递给它的祖先。递归

  • 关于带有回调函数的 Python 记录器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46354908/

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