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的框架中一些会话程序的管理
Apr 20 Python
Python2.7基于笛卡尔积算法实现N个数组的排列组合运算示例
Nov 23 Python
Python模拟随机游走图形效果示例
Feb 06 Python
对numpy的array和python中自带的list之间相互转化详解
Apr 13 Python
在django admin中添加自定义视图的例子
Jul 26 Python
Python通过cv2读取多个USB摄像头
Aug 28 Python
numpy np.newaxis 的实用分享
Nov 30 Python
Python使用Socket实现简单聊天程序
Feb 28 Python
Python greenlet和gevent使用代码示例解析
Apr 01 Python
Ubuntu20.04环境安装tensorflow2的方法步骤
Jan 29 Python
python中的class_static的@classmethod的巧妙用法
Jun 22 Python
Python学习之异常中的finally使用详解
Mar 16 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
PhpMyAdmin中无法导入sql文件的解决办法
2010/01/08 PHP
深入理解PHP之require/include顺序 推荐
2011/01/02 PHP
PHP实现补齐关闭的HTML标签
2016/03/22 PHP
Jquery实现网页跳转或用命令打开指定网页的解决方法
2013/07/09 Javascript
JQuery加载图片自适应固定大小的DIV
2013/09/12 Javascript
为JS扩展Array.prototype.indexOf引发的问题及解决办法
2015/01/21 Javascript
深入理解JavaScript系列(49):Function模式(上篇)
2015/03/04 Javascript
js实现字符串转日期格式的方法
2015/05/20 Javascript
iframe中子父类窗口调用JS的方法及注意事项
2015/08/25 Javascript
JavaScript获取当前cpu使用率的方法
2015/12/15 Javascript
JavaScript中常用的验证reg
2016/10/13 Javascript
Bootstrap table表格初始化表格数据的方法
2018/07/25 Javascript
layui 设置table 行的高度方法
2018/08/17 Javascript
详解webpack+ES6+Sass搭建多页面应用
2018/11/05 Javascript
微信小程序tab切换可滑动切换导航栏跟随滚动实现代码
2019/09/04 Javascript
Vue computed 计算属性代码实例
2020/04/22 Javascript
新手该如何学python怎么学好python?
2008/10/07 Python
解决使用pycharm提交代码时冲突之后文件丢失找回的方法
2018/08/05 Python
jupyter notebook中美观显示矩阵实例
2020/04/17 Python
pycharm 激活码及使用方式的详细教程
2020/05/12 Python
荷兰牛仔裤网上商店:Jeans Centre
2018/04/03 全球购物
自主招生自荐信范文
2013/12/04 职场文书
技能比武方案
2014/05/21 职场文书
主题团日活动总结
2014/06/25 职场文书
租房协议书样本
2014/08/20 职场文书
演讲稿开场白台词
2014/08/25 职场文书
公证委托书格式
2014/09/13 职场文书
无犯罪记录证明
2014/09/19 职场文书
2014基层党员批评与自我批评范文
2014/09/24 职场文书
2015年世界环境日活动方案
2015/05/05 职场文书
2016年度师德标兵先进事迹材料
2016/02/26 职场文书
Python读取文件夹下的所有文件实例代码
2021/04/02 Python
Vue实现动态查询规则生成组件
2021/05/27 Vue.js
教你如何使用Python Tkinter库制作记事本
2021/06/10 Python
python迷宫问题深度优先遍历实例
2021/06/20 Python
详解Vue router路由
2021/11/20 Vue.js