迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Python >

Python 日志记录传播

作者:迹忆客 最近更新:2023/06/14 浏览次数:

本文介绍了 LevelFilter 的使用,以显示如何将特定级别及更高级别(例如,INFO 及更高级别)的特定记录器名称的消息记录到特定的日志处理程序。


Python 日志记录传播

我们已经写了一篇文章讨论日志模块、它的重要性、各种日志级别,并演示了日志模块的本地和全局使用。 在这里,我们将学习如何传播低于当前记录器级别的级别的特定消息。

这意味着什么? 这意味着我们想要将特定记录器名称、特定级别或更高级别(比如 INFO 及以上)的消息记录到特定的日志处理程序(假设是流处理程序或文件处理程序)。

示例代码:

import logging

class LevelFilter(logging.Filter):
    def __init__(self, level):
        self.level = level

    def filter(self, record):
        return record.levelno >= self.level

def perform_logging(turn):
    logger = logging.getLogger('extra')
    logger.info('some information turn %d' % turn)
    logger.debug('this is the debug fudge turn %d' % turn)

rootLogger = logging.getLogger()
handler = logging.StreamHandler()
rootFormatter = logging.Formatter('root - %(levelname)s: %(msg)s')
handler.setFormatter(rootFormatter)
rootLogger.addHandler(handler)
rootLogger.setLevel(logging.DEBUG)
perform_logging(1)

extraLogger = logging.getLogger('extra')
extraHandler = logging.StreamHandler()
extraFormatter = logging.Formatter('extra - %(levelname)s: %(msg)s')
extraHandler.setFormatter(extraFormatter)
extraLogger.addHandler(extraHandler)

extraHandler.addFilter(LevelFilter(logging.INFO))
extraLogger.setLevel(logging.DEBUG)
perform_logging(2)

输出:

root - INFO: some information turn 1
root - DEBUG: this is the debug fudge turn 1
extra - INFO: some information turn 2
root - INFO: some information turn 2
root - DEBUG: this is the debug fudge turn 2

在这个例子中,我们创建了两个记录器:一个根记录器和一个命名记录器(这里是额外的)。

我们为根记录器附加 logging.StreamHandler 并将日志级别设置为 logging.DEBUG。 之后,我们将一个处理程序附加到一个命名记录器并将其日志记录级别设置为 logging.INFO

现在的重点是我们如何传播当前级别以下特定级别的消息。 为此,我们使用 LevelFilter 向每个仅允许特定级别的处理程序添加过滤器。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

Pandas read_csv()函数

发布时间:2024/04/24 浏览次数:254 分类:Python

Pandas read_csv()函数将指定的逗号分隔值(csv)文件读取到 DataFrame 中。

Pandas 追加数据到 CSV 中

发布时间:2024/04/24 浏览次数:352 分类:Python

本教程演示了如何在追加模式下使用 to_csv()向现有的 CSV 文件添加数据。

Pandas 多列合并

发布时间:2024/04/24 浏览次数:628 分类:Python

本教程介绍了如何在 Pandas 中使用 DataFrame.merge()方法合并两个 DataFrames。

Pandas loc vs iloc

发布时间:2024/04/24 浏览次数:837 分类:Python

本教程介绍了如何使用 Python 中的 loc 和 iloc 从 Pandas DataFrame 中过滤数据。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便