Python基于yaml文件配置logging日志过程解析


Posted in Python onJune 23, 2020

一、使用logging.config.dictConfig()函数读取配置信息,参数是字典类型

with open(file="./loggingconfigyaml.yaml", mode='r', encoding="utf-8")as file:
    logging_yaml = yaml.load(stream=file, Loader=yaml.FullLoader)
    # print(logging_yaml)
    # 配置logging日志:主要从文件中读取handler的配置、formatter(格式化日志样式)、logger记录器的配置
    logging.config.dictConfig(config=logging_yaml)
  # 获取根记录器:配置信息从yaml文件中获取
  root = logging.getLogger()
  # 子记录器的名字与配置文件中loggers字段内的保持一致
  my_module = logging.getLogger("my_module")
  print("rootlogger:", root.handlers)
  print("selflogger", my_module.handlers)
  # print("子记录器与根记录器的handler是否相同:", root.handlers[0] == my_module.handlers[0])
  my_module.error("DUBUG")
  root.info("INFO")
  root.error('ERROR')
  root.debug("rootDEBUG")

二、详细看一下yaml配置文件

version: 1
# 将信息传播到配置文件的跟日志记录器中
disable_existing_loggers: False

formatters:
  simple:
    format: "%(asctime)s - %(filename)s -%(name)s -%(levelname)s - %(message)s"
handlers:
  console:
    class: logging.StreamHandler
    level: DEBUG
    formatter: simple
    stream: ext://sys.stdout

  info_file_handler:
    class: logging.handlers.RotatingFileHandler
    level: INFO
    formatter: simple
    filename: ./info.log
    maxBytes: 10485760 # 10MB
    backupCount: 20
    encoding: utf8

  # error_file_handler:
    # class: logging.handlers.RotatingFileHandler
    # level: ERROR
    # formatter: simple
    # filename: ./info.log
    # maxBytes: 10485760 # 10MB
    # backupCount: 20
    # encoding: utf8
loggers:
  my_module:
    level: ERROR
    handlers: [console]
    # 打开日志记录器
    propagate: False
root:
  level: DEBUG
  handlers: [console, info_file_handler]

说明:

1、formatters配置了日志格式化输出时的样式;handlers配置了需要处理的日志信息,例如日志输出的位置(class字段,logging模块的handler只有streamhandler和filehandler,剩下的handler在logging.handlers模块中)、处理程序需要处理的日志级别(level字段),日志输出样式(formatter)等。

2、loggers设置了自定义的logger实例,在程序中使用logging.getLogger(“名字与配置文件中的logger名字一致且是字符串形式”)函数获取配置文件中logger实例的配置信息,例如打印的日志级别、子记录器的handler(1:子记录器与根记录器有相同的handler时,打印输出的日志会出现两遍,2:记录器的handler有多个时,而且输出的位置相同且class字段相同,也会导致输出两遍;诸如此问题,将logger记录器的propagate属性设置为False,就会禁止将日志消息传递给父级记录器的处理程序中)等;root设置了根记录器的配置信息,例如打印的日志级别、记录器的handler(多个handler时用列表存储)等

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现自动重启本程序的方法
Jul 09 Python
Python爬虫实例扒取2345天气预报
Mar 04 Python
Python嵌套列表转一维的方法(压平嵌套列表)
Jul 03 Python
Python类中方法getitem和getattr详解
Aug 30 Python
使用 Python 写一个简易的抽奖程序
Dec 08 Python
pytorch 实现查看网络中的参数
Jan 06 Python
TensorFlow实现自定义Op方式
Feb 04 Python
Python学习之路安装pycharm的教程详解
Jun 17 Python
浅谈如何使用python抓取网页中的动态数据实现
Aug 17 Python
pandas针对excel处理的实现
Jan 15 Python
Python Pygame实战在打砖块游戏的实现
Mar 17 Python
python高温预警数据获取实例
Jul 23 Python
解决pytorch多GPU训练保存的模型,在单GPU环境下加载出错问题
Jun 23 #Python
Python 程序报错崩溃后如何倒回到崩溃的位置(推荐)
Jun 23 #Python
浅谈pytorch中的BN层的注意事项
Jun 23 #Python
Python3与fastdfs分布式文件系统如何实现交互
Jun 23 #Python
踩坑:pytorch中eval模式下结果远差于train模式介绍
Jun 23 #Python
pytorch掉坑记录:model.eval的作用说明
Jun 23 #Python
Python使用Selenium实现淘宝抢单的流程分析
Jun 23 #Python
You might like
PHP调试的强悍利器之PHPDBG
2016/02/22 PHP
PHP中类的继承和用法实例分析
2016/05/24 PHP
php操作access数据库的方法详解
2017/02/22 PHP
支持汉转拼和拼音分词的PHP中文工具类ChineseUtil
2018/02/23 PHP
PHP7内核之Reference详解
2019/03/14 PHP
添加到收藏夹代码(兼容几乎所有的浏览器)
2007/01/09 Javascript
js活用事件触发对象动作
2008/08/10 Javascript
Prototype 学习 工具函数学习($A方法)
2009/07/12 Javascript
Prototype的Class.create函数解析
2011/09/22 Javascript
改进版通过Json对象实现深复制的方法
2012/10/24 Javascript
jquery实现表格奇数偶数行不同样式(有图为证及实现代码)
2013/01/23 Javascript
IE中JS跳转丢失referrer问题的2个解决方法
2014/07/18 Javascript
JavaScript使用setInterval()函数实现简单轮询操作的方法
2015/02/02 Javascript
JS封装cookie操作函数实例(设置、读取、删除)
2015/11/17 Javascript
JS如何实现在页面上快速定位(锚点跳转问题)
2017/08/14 Javascript
利用javascript如何随机生成一定位数的密码
2017/09/22 Javascript
JS删除数组里的某个元素方法
2018/02/03 Javascript
详解webpack打包nodejs项目(前端代码)
2018/09/19 NodeJs
微信小程序生成海报分享朋友圈的实现方法
2019/05/06 Javascript
微信小程序页面传多个参数跳转页面的实现方法
2019/05/17 Javascript
[13:25]VP vs VICI (BO3)
2018/06/07 DOTA
Python Excel处理库openpyxl使用详解
2019/05/09 Python
python实现关闭第三方窗口的方法
2019/06/28 Python
用Python画小女孩放风筝的示例
2019/11/23 Python
利用python实现.dcm格式图像转为.jpg格式
2020/01/13 Python
基于Python脚本实现邮件报警功能
2020/05/20 Python
pycharm-professional-2020.1下载与激活的教程
2020/09/21 Python
CSS3 rgb and rgba(透明色)的使用详解
2020/09/25 HTML / CSS
eBay法国购物网站:eBay.fr
2017/10/21 全球购物
英国羊皮鞋类领先品牌:Just Sheepskin
2019/12/12 全球购物
县政府办公室领导班子对照检查材料思想汇报
2014/09/28 职场文书
专升本学生毕业自我鉴定
2014/10/04 职场文书
2015年教师节演讲稿范文
2015/03/19 职场文书
办公室禁烟通知
2015/04/23 职场文书
应届毕业生的自我评价
2019/06/21 职场文书
python超详细实现完整学生成绩管理系统
2022/03/17 Python