logging 模块

logging 模块的核心点主要包括以下几个方面:基本配置、日志级别、日志记录器(Logger)、处理器(Handler)、格式器(Formatter)和过滤器(Filter)

当然可以,系统学习 logging 模块的核心点主要包括以下几个方面:基本配置、日志级别、日志记录器(Logger)、处理器(Handler)、格式器(Formatter)和过滤器(Filter)。下面我们详细讲解每个核心点,并提供相应的示例。

1. 基本配置

logging.basicConfig() 是最简单的配置方法,它用于设置日志记录的基本配置。

这种模式相当如是一种简配模式,比较快速,但不够灵活

import logging

logging.basicConfig(
    level=logging.INFO,  # 设置日志级别
    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',  # 日志格式
    filename='app.log',  # 日志文件名
    filemode='w'  # 写入模式,'w' 表示覆盖写,'a' 表示追加写
)

logging.info("这是一个信息日志")
logging.warning("这是一个警告日志")
logging.error("这是一个错误日志")

2. 日志级别

日志级别决定了日志的严重程度,从低到高有:DEBUGINFOWARNINGERRORCRITICAL。在配置时设置的日志级别决定了低于该级别的日志信息不会被记录。

logging.debug("这是调试信息")
logging.info("这是普通信息")
logging.warning("这是警告信息")
logging.error("这是错误信息")
logging.critical("这是严重错误信息")

3. 日志记录器(Logger)

日志记录器是 logging 模块的核心对象,用于记录日志。可以通过 logging.getLogger(name) 创建或获取一个记录器。

logger = logging.getLogger('my_logger')
logger.setLevel(logging.DEBUG)

logger.debug("这是调试信息")
logger.info("这是普通信息")

4. 处理器(Handler)

处理器决定了日志发送到哪里。常用的处理器有 StreamHandler(输出到控制台)和 FileHandler(输出到文件)。

# 创建处理器
console_handler = logging.StreamHandler()
file_handler = logging.FileHandler('file.log')

# 设置处理器日志级别
console_handler.setLevel(logging.DEBUG)
file_handler.setLevel(logging.ERROR)

# 将处理器添加到记录器
logger.addHandler(console_handler)
logger.addHandler(file_handler)

5. 格式器(Formatter)

格式器决定了日志的输出格式。通过 logging.Formatter 可以设置日志格式。

formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
console_handler.setFormatter(formatter)
file_handler.setFormatter(formatter)

6. 过滤器(Filter)

过滤器用于对日志进行更细粒度的控制,决定哪些日志应该被记录。

class MyFilter(logging.Filter):
    def filter(self, record):
        return '关键字' in record.getMessage()

logger.addFilter(MyFilter())

logger.info("这是一个包含关键字的信息")
logger.info("这是一条普通信息")

综合示例

综合以上内容,下面是一个完整的示例,展示了如何配置和使用 logging 模块:

这种模式就比较自由,配置灵活。

import logging

# 创建记录器
logger = logging.getLogger('my_logger')
logger.setLevel(logging.DEBUG)

# 创建处理器
console_handler = logging.StreamHandler()
file_handler = logging.FileHandler('app.log')

# 设置处理器日志级别
console_handler.setLevel(logging.DEBUG)
file_handler.setLevel(logging.ERROR)

# 创建格式器并设置给处理器
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
console_handler.setFormatter(formatter)
file_handler.setFormatter(formatter)

# 将处理器添加到记录器
logger.addHandler(console_handler)
logger.addHandler(file_handler)

# 添加过滤器
class MyFilter(logging.Filter):
    def filter(self, record):
        return '关键字' in record.getMessage()

logger.addFilter(MyFilter())

# 记录日志
logger.debug("这是调试信息")
logger.info("这是包含关键字的信息")
logger.warning("这是警告信息")
logger.error("这是错误信息")
logger.critical("这是严重错误信息")
posted @ 2024-05-27 11:06  babyfengfjx  阅读(13)  评论(0编辑  收藏  举报