python - 连续循环登录

标签 python logging

在不产生大量无用日志文件的情况下,在持续运行的循环中创建日志(使用 python 日志记录模块)的好方法是什么? 一个例子是一个循环,它常量列出一个文件夹,并在它看到特定类型的文件时执行一些操作。 我想记录没有找到文件,或者找到了文件但类型错误,而不是为每个文件夹检查不断记录同一行,因为它可能每秒运行多次。

最佳答案

创建一个 Handler子类化您需要的任何其他功能。存储您不想存储的最后一条或所有先前记录的消息 emit再次:

def make_filetype_aware_handler(handler_class):
    class DontRepeatFiletypeHandler(handler_class):

        def __init__(self, *args, **kwds):
            super().__init__(*args, **kwds)
            self.previous_types = set()

        def emit(self, record):
            if not record.file_type in self.previous_types:
                self.previous_types.add(record.file_type)
                super().emit(record)
    return DontRepeatFiletypeHandler

FiletypeStreamHandler = make_filetype_aware_handler(logging.StreamHandler)

logger = logging.getLogger()
logger.addHandler(FiletypeStreamHandler(sys.stderr))
logger.debug('Found file of type %(file_type)', file_type='x-type/zomg')

关于python - 连续循环登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6506146/

相关文章:

python - 如何在 Python 中获取两个 xml 标记之间的全部内容?

python - Pygame 游戏循环语法错误

java - 添加自定义记录器时出现 Glassfish TimeoutException

logging - Golang logrus 日志在控制台中可用但未发送到 loggly

PHP 从日志事件中获取行号

debugging - 如何在 Facebook iOS SDK 中启用日志记录以进行调试?

Python - re.sub 中的奇怪行为

Python(新手)从 API 调用中解析 XML

python - 使 SQLAlchemy 映射类分布在不同模块中的惯用方法

python - 如何正确地将标准输出、日志记录和 tqdm 重定向到 PyQt 小部件中