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

Python 如何记录在多个文件上发生的次数?,python,logging,Python,Logging,我希望对一件特定的事情发生的次数和一些非常重要的事情发生的时间做一个总结。我会举个例子 我的代码建立ssh连接并运行命令。每次脚本与ssh服务器失去连接时,都会引发并处理异常。假设这种类型的异常在多个文件中以不同的方式处理。我如何记录处理的次数?这并不特定于例外情况。例如,如果我运行一个命令并得到一个特定的响应,我想指出这是发生的。我需要在脚本结束时记录所有这些(我已经知道如何设置记录器) 之所以这样做,是因为我的脚本记录了大量信息,我希望能够在日志文件末尾快速总结发生的重要事件 tldr;我如

我希望对一件特定的事情发生的次数和一些非常重要的事情发生的时间做一个总结。我会举个例子

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

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


tldr;我如何记录某个事件在多个文件中发生/发生的次数,以便在脚本结束时将其记录下来?

我假设
多个文件
表示您有多个单独的脚本正在运行,并且您希望记录所有这些脚本中发生的事件的合并摘要


如果您只有一个脚本,则可以通过维护dict并将其转储到日志文件或覆盖单个摘要文件来轻松完成,对于多个脚本,您可以运行单独的日志服务器,所有脚本都使用该服务器进行日志记录,或至少添加和转储摘要信息,或者,您可以使用带有表锁定的公共数据库

我假设多个文件意味着您有多个单独的脚本正在运行,并且您希望记录所有这些脚本中发生的事件的合并摘要


如果您只有一个脚本,则可以通过维护dict并将其转储到日志文件或覆盖单个摘要文件来轻松完成,对于多个脚本,您可以运行单独的日志服务器,所有脚本都使用该服务器进行日志记录,或至少添加和转储摘要信息,或者,您可以使用带有表锁定的公共数据库

尝试子类化
logging.Handler
并重写
handle
emit
方法来检查正在发送的消息,并根据需要在某个位置递增计数器,然后将此处理程序添加到应用程序的根记录器中,如下所示:

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())

您可以对此进行扩展,使其更通用或更健壮,但这是实现所需功能的一种方法。

尝试子类化
日志记录.Handler
并重写
句柄
emit
方法,以检查正在发送的消息,并在适当的地方增加计数器,然后将此处理程序添加到应用程序的根记录器,如下所示:

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())

您可以对此进行扩展,使其更通用或更健壮,但这是实现您想要的功能的一种方法。

您是在日志记录时执行此操作,还是事后查看日志文件?我正在考虑在日志记录时执行此操作。您能提供一个日志记录消息的示例吗?一个有用的解决方案很可能需要毫不含糊地识别logs.logger.error(“连接丢失。重新连接”)中的事件,非常简单。假设我希望能够记录脚本执行时与ssh服务器断开连接的次数。现在,我只有一个字典,可以导入到每个文件中,如果发生了什么事情,可以在其中添加另一个密钥,如果跟踪密钥发生的次数,可以增加密钥的值。然后在最后把它全部记录下来。你是在记录的时候这样做,还是事后查看日志文件?我想在记录的时候这样做。你能提供一个你的日志消息的例子吗?一个有用的解决方案很可能需要毫不含糊地识别logs.logger.error(“连接丢失。重新连接”)中的事件,非常简单。假设我希望能够记录脚本执行时与ssh服务器断开连接的次数。现在,我只有一个字典,可以导入到每个文件中,如果发生了什么事情,可以在其中添加另一个密钥,如果跟踪密钥发生的次数,可以增加密钥的值。然后在最后记录所有内容。这只是一个脚本,我目前正在使用字典来维护摘要,但我只是想知道这是最好的方法还是有更好的方法?我会说这是最好的方法,简单更好,只需创建一个公共函数或类来更新和转储数据这只是一个脚本,我目前正在使用字典来维护摘要,但我只是想知道这是最好的方法还是有更好的方法?我会说这是最好的方法,简单更好,只需创建一个公共函数或类来更新和转储数据