Python“logging”模块获取对日志消息进行解析的权限

2024-04-19 07:09:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要一个日志模块来解析日志消息并将其发送到数据库以供以后分析(我使用的是Elasticsearch数据库)。我当前的实现使用logging模块,并具有所有标准调试级别。为此,我需要访问日志消息。Python的logging模块中是否有一个方法可以让我访问消息?在

我觉得这可以归结为编写一个适合Python的logging模块的日志处理程序。有什么想法吗?在


Tags: 模块方法数据库消息处理程序标准loggingelasticsearch
1条回答
网友
1楼 · 发布于 2024-04-19 07:09:05

Python2

class StoredLogger(logging.Logger):

    def makeRecord(self, *args, **kwargs):
        ...
        return logging.LogRecord(*args, **kwargs)

logging.setLoggerClass(StoredLogger)

makeRecord中,可以添加对store_message等函数的调用,该函数的行为由您定义。在

^{pr2}$

Python 3.2版+

您可以编写自己的记录工厂,可以在消息发生时使用它来存储消息。在

^{pr 3}$

您可以将对store_message的调用添加到record_factory中。在

def record_factory(*args, **kwargs):
    store_message(*args, **kwargs)

    global old_factory
    return old_factory(*args, **kwargs)

然后,当您使用logging.info('foo')之类的东西时,它将通过store_message,然后通过写入其输出流来恢复其正常行为。您可能需要考虑将record_factory重命名为更具描述性的名称,如stored_record_factory。在

相关问题 更多 >