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正则匹配查询港澳通行证办理进度示例分享
Dec 27 Python
django+js+ajax实现刷新页面的方法
May 22 Python
django实现同一个ip十分钟内只能注册一次的实例
Nov 03 Python
Python爬虫文件下载图文教程
Dec 23 Python
python调用c++传递数组的实例
Feb 13 Python
基于YUV 数据格式详解及python实现方式
Dec 09 Python
tensorflow 实现自定义梯度反向传播代码
Feb 10 Python
找Python安装目录,设置环境路径以及在命令行运行python脚本实例
Mar 09 Python
Python列表去重复项的N种方法(实例代码)
May 12 Python
python网络编程之五子棋游戏
May 14 Python
小白教你PyCharm从下载到安装再到科学使用PyCharm2020最新激活码
Sep 25 Python
Python selenium模拟网页点击爬虫交管12123违章数据
May 26 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
玛琪朵 Macchiato
2021/03/03 咖啡文化
php下关于Cannot use a scalar value as an array的解决办法
2010/08/08 PHP
浅析PHP绘图技术
2013/07/03 PHP
PHP和JavaScrip分别获取关联数组的键值示例代码
2013/09/16 PHP
php判断字符串在另一个字符串位置的方法
2014/02/27 PHP
PHP实现打包zip并下载功能
2018/06/12 PHP
解决php写入数据库乱码的问题
2019/09/17 PHP
PHP字符串与数组处理函数用法小结
2020/01/07 PHP
Thinkphp 框架配置操作之动态配置、扩展配置及批量配置实例分析
2020/05/15 PHP
如果文字过长,则将过长的部分变成省略号显示
2006/06/26 Javascript
javascript字典探测用户名工具
2006/10/05 Javascript
一个js导致的jquery失效问题的解决方法
2013/11/27 Javascript
JS 获取浏览器和屏幕宽高等信息代码
2014/03/31 Javascript
函数式 JavaScript(一)简介
2014/07/07 Javascript
JavaScript中的getMilliseconds()方法使用详解
2015/06/10 Javascript
JS设置下拉列表框当前所选值的方法
2015/12/22 Javascript
jQuery简单实现遍历单选框的方法
2017/03/06 Javascript
值得分享和收藏的xmlplus组件学习教程
2017/05/05 Javascript
vue.js实现照片放大功能
2020/06/23 Javascript
[02:31]DOTA2帕克 英雄基础教程
2013/11/26 DOTA
[57:38]2018DOTA2亚洲邀请赛3月30日 小组赛A组 OpTic VS OG
2018/03/31 DOTA
python网络爬虫采集联想词示例
2014/02/11 Python
运行django项目指定IP和端口的方法
2018/05/14 Python
Python动态导入模块的方法实例分析
2018/06/28 Python
Python正则表达式和元字符详解
2018/11/29 Python
python实现猜数游戏
2020/03/27 Python
keras-siamese用自己的数据集实现详解
2020/06/10 Python
基于css3仿造window7的开始菜单
2010/06/17 HTML / CSS
AmazeUI 折叠面板的实现代码
2020/08/17 HTML / CSS
代理商会议邀请函
2014/01/27 职场文书
工地安全检查制度
2014/02/04 职场文书
《灯光》教学反思
2014/02/08 职场文书
三八红旗手先进事迹材料
2014/05/13 职场文书
贸易经济专业自荐书
2014/06/29 职场文书
新闻学专业职业生涯规划范文:我的人生我做主
2014/09/12 职场文书
行政处罚听证告知书
2015/07/01 职场文书