python的logging 模块的propagate设置
2022/4/28 9:14:43
本文主要是介绍python的logging 模块的propagate设置,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
代码:
import logging import sys LOG_FORMAT = '[%(asctime)s PID:%(process)d %(levelname)s %(filename)s %(funcName)s] %(message)s' sh = logging.StreamHandler(sys.stdout) formatter = logging.Formatter(LOG_FORMAT) sh.setFormatter(formatter) sh2 = logging.StreamHandler(sys.stdout) formatter2 = logging.Formatter(LOG_FORMAT) sh2.setFormatter(formatter2) sh3 = logging.StreamHandler(sys.stdout) formatter3 = logging.Formatter(LOG_FORMAT) sh3.setFormatter(formatter3) lab_logger = logging.getLogger() lab_logger.handlers = [sh] lab_logger_2 = logging.getLogger('a') lab_logger_2.handlers = [sh2] # lab_logger_2.propagate=False lab_logger_3 = logging.getLogger('a.b') lab_logger_3.handlers = [sh3] # lab_logger_3.propagate=False lab_logger_3.warning('xxxxxxxxxxxxxxxxxxxxx')
运行结果:
修改:
import logging import sys LOG_FORMAT = '[%(asctime)s PID:%(process)d %(levelname)s %(filename)s %(funcName)s] %(message)s' sh = logging.StreamHandler(sys.stdout) formatter = logging.Formatter(LOG_FORMAT) sh.setFormatter(formatter) sh2 = logging.StreamHandler(sys.stdout) formatter2 = logging.Formatter(LOG_FORMAT) sh2.setFormatter(formatter2) sh3 = logging.StreamHandler(sys.stdout) formatter3 = logging.Formatter(LOG_FORMAT) sh3.setFormatter(formatter3) lab_logger = logging.getLogger() lab_logger.handlers = [sh] lab_logger_2 = logging.getLogger('a') lab_logger_2.handlers = [sh2] # lab_logger_2.propagate=False lab_logger_3 = logging.getLogger('a.b') lab_logger_3.handlers = [sh3] lab_logger_3.propagate=False lab_logger_3.warning('xxxxxxxxxxxxxxxxxxxxx')
运行结果:
参考官方文档:
https://docs.python.org/zh-cn/3/library/logging.html
可以知道,logging.getLogger()获得的是ROOT记录器,logging.getLogger('a')获得的是名为'a'的记录器,logging.getLogger('a.b')获得的是名为'a.b'的记录器。
从logging的记录器名称来看,从父亲到子代可以理解为:
ROOT>'a'>'a.b'
也就是说'a.b','a'记录器的propagate设置为False,'a.b'的记录器进行记录时同时会调用'a'记录器和ROOT记录器进行记录,于是就进行了三次记录,同理,
如果'a'记录器的propagate设置为False,'a.b'的记录器进行记录时则不会调用上层记录器,于是只记录一次。
propagate设置可以绝对下层记录器记录时是否调用上层记录器,'a.b'记录器为'a'记录器的下层且所有记录器均为ROOT记录器的下层。
====================================================
参考:
https://www.cnblogs.com/yangxiaolan/p/5965185.html
====================================================
这篇关于python的logging 模块的propagate设置的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-23使用python部署一个usdt合约,部署自己的usdt稳定币
- 2024-12-20Python编程入门指南
- 2024-12-20Python编程基础与进阶
- 2024-12-19Python基础编程教程
- 2024-12-19python 文件的后缀名是什么 怎么运行一个python文件?-icode9专业技术文章分享
- 2024-12-19使用python 把docx转为pdf文件有哪些方法?-icode9专业技术文章分享
- 2024-12-19python怎么更换换pip的源镜像?-icode9专业技术文章分享
- 2024-12-19Python资料:新手入门的全面指南
- 2024-12-19Python股票自动化交易实战入门教程
- 2024-12-19Python股票自动化交易入门教程