Python日志分级别输出到不同文件

思路:为logger设置2个handler,再对2个handler设置不同的filter进行日志过滤。
通过supervisor管理项目时,会有stdout和stderr两种日志路径的设置方式,通过给一个logger设置2个StreamHandler后,分别对handler设置日志级别的过滤,实现日志的分级输出。

import logging
import sys

log = logging.getLogger('test')

log_handler_info = logging.StreamHandler(sys.stdout)
log_handler_err = logging.StreamHandler(sys.stderr)

info_filter = logging.Filter()
info_filter.filter = lambda record: record.levelno < logging.WARNING # 设置过滤等级
err_filter = logging.Filter()
err_filter.filter = lambda record: record.levelno >= logging.WARNING

log_handler_info.addFilter(info_filter)
log_handler_err.addFilter(err_filter)

log.addHandler(log_handler_info)
log.addHandler(log_handler_err)

log.setLevel("INFO")

log.debug("debug")
log.info("info")
log.warning("warning")
log.error("error")

同时通过log.setLevel避免了比INFO级别更低日志的写入。
代码中info_filter会输出INFO级别的日志,err_filter会输出WARNING和更高级别的日志。
运行代码结果如下
在这里插入图片描述

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值