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 11 Python
Python 递归函数详解及实例
Dec 27 Python
Windows环境下python环境安装使用图文教程
Mar 13 Python
python将控制台输出保存至文件的方法
Jan 07 Python
django 消息框架 message使用详解
Jul 22 Python
python使用matplotlib绘制雷达图
Oct 18 Python
python paramiko远程服务器终端操作过程解析
Dec 14 Python
python随机模块random使用方法详解
Feb 14 Python
python中threading开启关闭线程操作
May 02 Python
Python实现socket库网络通信套接字
Jun 04 Python
Python合并多张图片成PDF
Jun 09 Python
Python中Schedule模块使用详解 周期任务神器
Apr 19 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数组及条件,循环语句学习
2012/11/11 PHP
实现在同一方法中获取当前方法中新赋值的session值解决方法
2014/06/26 PHP
php生成动态验证码gif图片
2015/10/19 PHP
PHP中将一个字符串部分字符用星号*替代隐藏的实现代码
2019/09/08 PHP
PHP调用QQ互联接口实现QQ登录网站功能示例
2019/10/24 PHP
一个cssQuery对象 javascript脚本实现代码
2009/07/21 Javascript
JS弹出对话框返回值代码(asp.net后台)
2010/12/28 Javascript
jQuery 翻牌或百叶窗效果(内容三秒自动切换)
2012/06/14 Javascript
ajax请求get与post的区别总结
2013/11/04 Javascript
JavaScript中number转换成string介绍
2014/12/31 Javascript
js实现类似新浪微博首页内容渐显效果的方法
2015/04/10 Javascript
JavaScript取得键盘按下方向键是哪个的方法
2015/08/04 Javascript
基于jQuery Easyui实现登陆框界面
2017/07/10 jQuery
解决canvas画布使用fillRect()时高度出现双倍效果的问题
2017/08/03 Javascript
jQuery 利用ztree实现树形表格的实例代码
2017/09/27 jQuery
Node之简单的前后端交互(实例讲解)
2017/11/14 Javascript
jQuery实现右侧抽屉式在线客服功能
2017/12/25 jQuery
从零开始用electron手撸一个截屏工具的示例代码
2018/10/10 Javascript
详解使用angular框架离线你的应用(pwa指南)
2019/01/31 Javascript
一文了解Vue中的nextTick
2019/05/06 Javascript
JS绘图Flot如何实现动态可刷新曲线图
2020/10/16 Javascript
python中常用的各种数据库操作模块和连接实例
2014/05/29 Python
用Python实现命令行闹钟脚本实例
2016/09/05 Python
Python断言assert的用法代码解析
2018/02/03 Python
Python实现的json文件读取及中文乱码显示问题解决方法
2018/08/06 Python
Python中实例化class的执行顺序示例详解
2018/10/14 Python
Python图像处理之直线和曲线的拟合与绘制【curve_fit()应用】
2018/12/26 Python
windows 10 设定计划任务自动执行 python 脚本的方法
2019/09/11 Python
Python如何输出警告信息
2020/07/30 Python
详解pycharm配置python解释器的问题
2020/10/15 Python
python中翻译功能translate模块实现方法
2020/12/17 Python
详解如何用canvas画一个微笑的表情
2019/03/14 HTML / CSS
戴森香港官方网站:Dyson香港
2021/02/11 全球购物
董事长秘书岗位职责
2013/11/29 职场文书
学习交流会主持词
2014/04/01 职场文书
2014年售票员工作总结
2014/11/19 职场文书