迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > 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 向每个仅允许特定级别的处理程序添加过滤器。

上一篇:Python 全局日志记录器

下一篇:没有了

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

本文地址:

相关文章

Python 全局日志记录器

发布时间:2023/06/14 浏览次数:146 分类:Python

本文介绍 Python 中的日志记录模块。 它还介绍了日志记录级别及其重要性,从而生成了一个代码示例,演示了 Python 日志记录模块的全局使用。

在 Python 中可视化树

发布时间:2023/06/14 浏览次数:150 分类:Python

由于许多不同的原因,决策树是一种常见的监督学习技术。 决策树的优点包括我们可以将它们用于分类和回归,它们不需要特征缩放,而且决策树易于阅读。本文介绍了 Python 的 Graphviz 来显示

在 Python 中打印二叉树

发布时间:2023/06/14 浏览次数:101 分类:Python

本文将讨论二叉树以及我们如何使用它。 我们还将看到如何使用 Python 打印它。我们将了解在处理二叉树时使用的术语。 我们还将研究使用 Python 代码的二叉树示例。

Python 中的二维插值

发布时间:2023/06/14 浏览次数:149 分类:Python

本文展示了如何在 Python 中进行插值,并研究了不同的 2d 实现方法。 我们将讨论用于双变量插值的有用函数,例如 scipy.interpolate.interp2d、numpy.meshgrid 和 Python 中使用的用于平滑/插值 (RBF) 的径向

Python 中的 3D 插值

发布时间:2023/06/13 浏览次数:121 分类:Python

插值是在离散集的定义范围内构造新数据点的方法。 插值意味着找到点或曲线之间的值。从数学的角度来看,插值是获取位于其他已知数据点之间的特定未知数据点的值。插值的重要性

在 Python 中重新抛出异常

发布时间:2023/06/13 浏览次数:53 分类:Python

Python 为我们提供了 try-except 块来处理程序中的异常。 它还为我们提供了 raise 语句来手动抛出异常。本文将讨论如何在 Python 程序中重新抛出异常。在 Python 中抛出异常

Python 模拟引发异常

发布时间:2023/06/13 浏览次数:160 分类:Python

本文的主要目的是演示如何在使用单元测试库 unittest 时抛出异常。在 Python 中使用单元测试库 unittest 时抛出异常

Python打开文件异常处理

发布时间:2023/06/13 浏览次数:146 分类:Python

要打开文件,Python 有一个名为 open() 的内置函数,用户可以通过它读取或写入文件,但是如果在任何情况下文件丢失或编译器无法访问,那么,我们 遇到 FileNotFoundError。 本文将介绍如何处理

Python 绘图 CSV

发布时间:2023/06/13 浏览次数:67 分类:Python

CSV 代表逗号分隔值,一种存储结构化数据的流行格式。 CSV 文件包含具有行和列的表格形式的数据。我们经常需要可视化存储在 CSV 文件中的数据。 为此,Python 提供了不同类型的数据可视化图

扫一扫阅读全部技术教程

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

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便