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实现测试磁盘性能的方法
Mar 12 Python
Python读写unicode文件的方法
Jul 10 Python
python批量设置多个Excel文件页眉页脚的脚本
Mar 14 Python
Python中如何导入类示例详解
Apr 17 Python
详解python statistics模块及函数用法
Oct 27 Python
pycharm设置当前工作目录的操作(working directory)
Feb 14 Python
python实现翻译word表格小程序
Feb 27 Python
使用 Python ssh 远程登陆服务器的最佳方案
Mar 06 Python
Python 输出详细的异常信息(traceback)方式
Apr 08 Python
利用scikitlearn画ROC曲线实例
Jul 02 Python
Python+unittest+requests 接口自动化测试框架搭建教程
Oct 09 Python
Python tkinter之Bind(绑定事件)的使用示例
Feb 05 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
Mysql的GROUP_CONCAT()函数使用方法
2008/03/28 PHP
JScript中使用ADODB.Stream判断文件编码的代码
2008/06/09 Javascript
仿jQuery的siblings效果的js代码
2011/08/09 Javascript
js修改原型的属性使用介绍
2014/01/26 Javascript
js实现局部页面打印预览原理及示例代码
2014/07/03 Javascript
jquery简单实现网页层的展开与收缩效果
2015/08/07 Javascript
XML文件转化成NSData对象的方法
2015/08/12 Javascript
Bootstrap 粘页脚效果
2016/03/28 Javascript
jQuery如何防止Ajax重复提交
2016/10/14 Javascript
jQuery实现级联下拉框实战(5)
2017/02/08 Javascript
js实现九宫格的随机颜色跳转
2017/02/19 Javascript
微信小程序开发之麦克风动画 帧动画 放大 淡出
2017/04/18 Javascript
js设置随机切换背景图片的简单实例
2017/11/12 Javascript
jQuery 筛选器简单操作示例
2019/10/02 jQuery
详解小程序如何改变onLoad的执行时机
2019/11/01 Javascript
ES6如何用一句代码实现函数的柯里化
2020/01/18 Javascript
使用React-Router实现前端路由鉴权的示例代码
2020/07/26 Javascript
js利用iframe实现选项卡效果
2020/08/09 Javascript
python简单猜数游戏实例
2015/07/09 Python
python3实现暴力穷举博客园密码
2016/06/19 Python
python读取txt文件并取其某一列数据的示例
2019/02/19 Python
利用selenium爬虫抓取数据的基础教程
2019/06/10 Python
Python封装成可带参数的EXE安装包实例
2019/08/24 Python
Python爬取豆瓣视频信息代码实例
2019/11/16 Python
PyTorch和Keras计算模型参数的例子
2020/01/02 Python
python logging通过json文件配置的步骤
2020/04/27 Python
CSS3中的注音对齐属性ruby-align用法指南
2016/07/01 HTML / CSS
css3中用animation的steps属性制作帧动画
2019/04/25 HTML / CSS
小孩百日宴答谢词
2014/01/15 职场文书
会议活动邀请函
2014/01/27 职场文书
材料专业毕业生求职信
2014/02/26 职场文书
销售竞赛活动方案
2014/08/23 职场文书
报效祖国演讲稿
2014/09/15 职场文书
网络工程专业大学生求职信
2014/10/01 职场文书
2014年保洁工作总结
2014/11/24 职场文书
我的生日感言
2015/08/03 职场文书