如何记录多个文件上发生的事件的次数?

时间:2011-07-13 14:39:40

标签: python logging

我希望总结特定事件发生的次数以及何时出现非常重要的事情。我举个例子......

我的代码建立了一个ssh连接并运行命令。每次脚本失去与ssh服务器的连接时,都会引发异常并进行处理。假设这种类型的异常在多个文件中以不同的方式处理。如何记录处理的次数?这不是特例。例如,如果我运行命令并获得某个响应,我想要注意这是发生的。当脚本结束时,我需要记录所有这些(我已经知道如何设置记录器)。

这样做的原因是我的脚本记录了大量信息,我希望能够快速总结日志文件末尾发生的重要事情。

tldr;如何记录事件发生的次数/何时在多个文件中发生某些事情,以便我可以在脚本结束时记录它?

2 个答案:

答案 0 :(得分:1)

尝试子类化logging.Handler并覆盖handleemit方法以检查发送的消息并在适当的位置递增计数器,然后将此处理程序添加到应用程序的根记录器中这样:

import logging
counter = 0
class CounterHandler(logging.Handler):
    def emit(self, record):
        global counter
        if record.msg == "Connection lost. Reconnecting.":
            counter += 1

root_logger = logging.getLogger()
root_logger.addHandler(CounterHandler())

您可以对其进行扩展,使其更加通用或强大,但这是实现您所需要的一种方式。

答案 1 :(得分:0)

我假设multiple files你的意思是你有多个单独的脚本在运行,你想记录一些在所有这些脚本中发生的事件的综合摘要。

如果您有一个脚本,通过维护dict并将其转储到日志文件或者可能覆盖单个摘要文件很容易,对于多个脚本,您可以运行单独的日志记录服务器,所有脚本用于记录或至少添加和转储摘要信息,或者您可以使用具有表锁定的公共数据库