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实例之wxpython中Frame使用方法
Jun 09 Python
Python实现冒泡,插入,选择排序简单实例
Aug 18 Python
编程语言Python的发展史
Sep 26 Python
在Python中进行自动化单元测试的教程
Apr 15 Python
Python标准库笔记struct模块的使用
Feb 22 Python
TensorFlow 合并/连接数组的方法
Jul 27 Python
Python编程图形库之Pillow使用方法讲解
Dec 28 Python
Python面向对象程序设计构造函数和析构函数用法分析
Apr 12 Python
创建Django项目图文实例详解
Jun 06 Python
Python发送邮件实现基础解析
Aug 14 Python
python Pexpect模块的使用
Dec 25 Python
五分钟学会怎么用Pygame做一个简单的贪吃蛇
Jan 06 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
教你IIS6的PHP最佳配置方法
2006/09/05 PHP
Get或Post提交值的非法数据处理
2006/10/09 PHP
php预定义常量
2006/12/25 PHP
IIS6的PHP最佳配置方法
2007/03/19 PHP
php is_file()和is_dir()用于遍历目录时用法注意事项
2010/03/02 PHP
PHP 删除文件与文件夹操作 unlink()与rmdir()这两个函数的使用
2011/07/17 PHP
PHP 转义使用详解
2013/07/15 PHP
显示youtube视频缩略图和Vimeo视频缩略图代码分享
2014/02/13 PHP
PHP中常用的字符串格式化函数总结
2014/11/19 PHP
php中Array2xml类实现数组转化成XML实例
2014/12/08 PHP
PHP微信企业号开发之回调模式开启与用法示例
2017/11/25 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式一图文详解
2019/04/09 PHP
PHP7中I/O模型内核剖析详解
2019/04/14 PHP
基于PHP实现短信验证码发送次数限制
2020/07/11 PHP
学习javascript,实现插入排序实现代码
2011/07/31 Javascript
Jquery插件写法笔记整理
2012/09/06 Javascript
jquery在Chrome下获取图片的长宽问题解决
2013/03/20 Javascript
js生成动态表格并为每个单元格添加单击事件的方法
2014/04/14 Javascript
基于JavaScript实现幸运抽奖页面
2020/07/05 Javascript
基于vue-router 多级路由redirect 重定向的问题
2018/09/03 Javascript
kafka调试中遇到Connection to node -1 could not be established. Broker may not be available.
2019/09/17 Javascript
webpack3升级到webpack4遇到问题总结
2019/09/30 Javascript
python打开windows应用程序的实例
2019/06/28 Python
Python Pandas对缺失值的处理方法
2019/09/27 Python
python  logging日志打印过程解析
2019/10/22 Python
pytorch实现查看当前学习率
2020/06/24 Python
有750多个顶级品牌的瑞士时尚在线:ABOUT YOU
2017/01/04 全球购物
MADE荷兰:提供原创设计师家具
2018/04/03 全球购物
华为慧通笔试题
2016/04/22 面试题
实习单位接收函
2014/01/11 职场文书
人事部经理岗位职责
2014/03/07 职场文书
班组长竞聘书
2014/03/31 职场文书
幼儿教师求职信
2014/05/24 职场文书
中韩经贸翻译专业大学生职业生涯规划范文
2014/09/18 职场文书
pytest实现多进程与多线程运行超好用的插件
2022/07/15 Python
CSS中理解层叠性及权重如何分配
2022/12/24 HTML / CSS