带有回调函数的Python记录器

时间:2017-09-22 00:01:11

标签: python python-2.7 logging

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

1 个答案:

答案 0 :(得分:1)

子类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.warn('Log 1')
logger.warn('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">

如果覆盖了logging.Handler的{​​{1}},请确保对其进行调用。


适用于__init__模块的标准警告:

  • 默认日志级别为WARNING(因此不会传递DEBUG / INFO以发出信号)
  • 将日志记录传递给记录器的所有处理程序