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 @   babyfengfjx  阅读(19)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示