Python中,通过logging.Filter
类实现不同级别日志输出到不同文件,需要结合多处理器(Handler)和自定义过滤器(Filter)的组合策略。详细实现方法:
一、核心实现思路
- 多处理器分离输出:为每个日志级别创建独立的
FileHandler
,分别指向不同文件。 - 过滤器精准控制:为每个处理器定义过滤规则,仅允许特定级别及以上的日志通过。
- 层级关系管理:通过
Logger
和Handler
的层级结构,避免日志重复输出。
二、分步实现
步骤1:创建自定义过滤器类
import logging
class LevelFilter(logging.Filter):
def __init__(self, min_level):
super().__init__()
self.min_level = min_level
def filter(self, record):
return record.levelno >= self.min_level # 仅允许>=min_level的日志通过