当前位置: 首页 > news >正文

Levels checking (filtering) in logging module

In Python's logging module, both ‌logger levels‌ and ‌handler levels‌ control which log messages are processed, but they operate at different stages of the logging workflow. Here's a clear comparison:


1. Logger Level

1.1 What it does‌:

        Acts as the ‌first filter‌. Determines whether a log message enters the logging system.

‌1.2 How to set‌:

logger.setLevel(logging.INFO) # Logger level set to INFO

1‌.3 Behavior‌:

  • If the message's severity is ‌below‌ the logger level, it is ‌ignored immediately‌.
  • If it meets/exceeds the logger level, the message is passed to attached handlers.
  • Default level‌: WARNING (if not explicitly set).

1.4 Example:

logger.setLevel(logging.INFO) 
logger.debug("Debug message") # Ignored (below INFO) 
logger.info("Info message") # Passed to handlers

2. Handler Level

2‌.1 What it does‌: 


Acts as the ‌second filter‌. Determines whether a message (that passed the logger level) is output by a specific handler.

2‌.2 How to set‌:

handler.setLevel(logging.ERROR) # Handler level set to ERROR logger.addHandler(handler)

2‌.3 Behavior‌:

  • Only messages ‌meeting/exceeding‌ the handler's level are processed by that handler.
  • Different handlers can have different levels (e.g., log errors to a file but warnings to the console).
  • Default level‌: NOTSET.

2.4 Example:

# Handler 1: Logs WARNING+ to console 
console_handler = logging.StreamHandler() 
console_handler.setLevel(logging.WARNING) # Handler level 
# Handler 2: Logs ERROR+ to file 
file_handler = logging.FileHandler("errors.log") file_handler.setLevel(logging.ERROR) # Handler level logger.addHandler(console_handler) 
logger.addHandler(file_handler) 
# Test messages 
logger.warning("Warning!") # Output to console only 
logger.error("Error!") # Output to console AND file

3‌. Key Interaction

A message must pass ‌BOTH‌ levels to be output by a handler

        Logger Level (Gate 1)   Handler Level (Gate 2) 
Message ----------------------> ----------------------> Output (e.g., INFO, WARNING)   (e.g., ERROR, CRITICAL)

4‌. Critical Rules

4.1 Summary Table

ScenarioOutcome
Message level < ‌Logger levelMessage ignored entirely.
Message level < ‌Handler levelMessage reaches handler but is discarded by that handler.
Message level ≥ ‌Both levelsMessage is processed by the handler (e.g., printed, saved, etc.).

‌4.2 Example Workflow

import logging 
logger = logging.getLogger("example") 
logger.setLevel(logging.WARNING) # Logger level: WARNING 
# Handler 1: Level WARNING (logs to console) 
console = logging.StreamHandler() 
console.setLevel(logging.WARNING) # Handler level: WARNING logger.addHandler(console) 
# Handler 2: Level ERROR (logs to file) 
file = logging.FileHandler("errors.log") 
file.setLevel(logging.ERROR) # Handler level: ERROR 
logger.addHandler(file) 
# Test 
logger.info("Info") # Blocked by logger (level < WARNING) 
logger.warning("Alert!") # Passed by logger → printed by console (level ≥ WARNING),ignored by file (level < ERROR) 
logger.error("FAIL!") # Passed by logger → printed by console AND written to file (level ≥ both)

4.3 Key Takeaways

  1. Logger level‌ is the ‌global gatekeeper‌.
  2. Handler levels‌ fine-tune where messages go (e.g., console vs. file).
  3. Set logger level to the ‌lowest severity‌ you want to process.
  4. Set handler levels to ‌selectively output‌ messages per destination.

Use this to control verbosity efficiently (e.g., log debug messages to a file while showing only errors in the console).

http://www.xdnf.cn/news/1161721.html

相关文章:

  • 大腾智能国产3D CAD软件正式上架华为云云商店
  • Pytorch01:深度学习中的专业名词及基本介绍
  • Linux的磁盘存储管理实操——(中)——逻辑卷管理实战
  • JavaScript的引入方式和基础语法的快速入门与学习
  • 【Linux】重生之从零开始学习运维之Mysql安装
  • Linux下SPI设备驱动开发
  • 管理项目环境和在环境中使用conda或pip里如何查看库版本———Linux命令行操作
  • 装饰器模式分析
  • Android Studio 的 Gradle 究竟是什么?
  • 在 Conda 中删除环境及所有安装的库
  • ElasticSearch:不停机更新索引类型(未验证)
  • 【iOS】锁[特殊字符]
  • 归并排序:优雅的分治排序算法(C语言实现)
  • Spring Boot05-热部署
  • 设计模式六:工厂模式(Factory Pattern)
  • Trae开发uni-app+Vue3+TS项目飘红踩坑
  • 数据结构自学Day11-- 排序算法
  • 迁移科技3D视觉系统:赋能机器人上下料,开启智能制造高效新纪元
  • react-window 大数据列表和表格数据渲染组件之虚拟滚动
  • GoLang教程005:switch分支
  • Git核心功能简要学习
  • 面试总结第54天微服务开始
  • Neo4j graph database
  • 【数据结构与算法】数据结构初阶:详解二叉树(二)——堆
  • Vue3 面试题及详细答案120道 (1-15 )
  • Node.js的Transform 流
  • 2x2矩阵教程
  • 亚马逊自养号测评实战指南:从环境搭建到安全提排名
  • G1垃圾回收器
  • 复习博客:JVM