Python 日志记录传播
本文介绍了 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 向每个仅允许特定级别的处理程序添加过滤器。
相关文章
Pandas DataFrame DataFrame.shift() 函数
发布时间:2024/04/24 浏览次数:133 分类:Python
-
DataFrame.shift() 函数是将 DataFrame 的索引按指定的周期数进行移位。
Python pandas.pivot_table() 函数
发布时间:2024/04/24 浏览次数:82 分类:Python
-
Python Pandas pivot_table()函数通过对数据进行汇总,避免了数据的重复。
Pandas read_csv()函数
发布时间:2024/04/24 浏览次数:254 分类:Python
-
Pandas read_csv()函数将指定的逗号分隔值(csv)文件读取到 DataFrame 中。
Pandas 多列合并
发布时间:2024/04/24 浏览次数:628 分类:Python
-
本教程介绍了如何在 Pandas 中使用 DataFrame.merge()方法合并两个 DataFrames。
Pandas loc vs iloc
发布时间:2024/04/24 浏览次数:837 分类:Python
-
本教程介绍了如何使用 Python 中的 loc 和 iloc 从 Pandas DataFrame 中过滤数据。
在 Python 中将 Pandas 系列的日期时间转换为字符串
发布时间:2024/04/24 浏览次数:894 分类:Python
-
了解如何在 Python 中将 Pandas 系列日期时间转换为字符串