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 相关文章推荐
以windows service方式运行Python程序的方法
Jun 03 Python
python中实现迭代器(iterator)的方法示例
Jan 19 Python
scrapy爬虫实例分享
Dec 28 Python
Python处理文本换行符实例代码
Feb 03 Python
pandas数据处理基础之筛选指定行或者指定列的数据
May 03 Python
Python面向对象之类的内置attr属性示例
Dec 14 Python
解决python3 安装不了PIL的问题
Aug 16 Python
Python包和模块的分发详细介绍
Jun 19 Python
keras的backend 设置 tensorflow,theano操作
Jun 30 Python
python求解汉诺塔游戏
Jul 09 Python
Python hashlib模块的使用示例
Oct 09 Python
python中的测试框架
Nov 13 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中的session永不过期的解决思路及实现方法分享
2011/04/20 PHP
使用swoole扩展php websocket示例
2014/02/13 PHP
PHP5.2中PDO的简单使用方法
2016/03/25 PHP
PHP获取中国时间(上海时区时间)及美国时间的方法
2017/02/23 PHP
用javascript实现的图片马赛克后显示并切换加文字功能
2007/04/21 Javascript
jquery的ajaxSubmit()异步上传图片并保存表单数据演示代码
2013/06/04 Javascript
Get中文乱码IE浏览器Get中文乱码解决方案
2013/12/26 Javascript
javascript计算用户打开网页的停留时间
2014/01/09 Javascript
JavaScript设计模式之适配器模式介绍
2014/12/28 Javascript
html的DOM中Event对象onabort事件用法实例
2015/01/21 Javascript
JavaScript实现信用卡校验方法
2015/04/07 Javascript
JSON字符串转JSON对象
2015/07/31 Javascript
实例详解jQuery表单验证插件validate
2016/01/18 Javascript
jquery实现图片上传前本地预览功能
2016/05/10 Javascript
JavaScript知识点总结(十六)之Javascript闭包(Closure)代码详解
2016/05/31 Javascript
原生 JS Ajax,GET和POST 请求实例代码
2016/06/08 Javascript
详解vue.js组件化开发实践
2016/12/14 Javascript
简单实现JS倒计时效果
2016/12/23 Javascript
利用nodejs监控文件变化并使用sftp上传到服务器
2017/02/18 NodeJs
解决Vue.js由于延时显示了{{message}}引用界面的问题
2018/08/25 Javascript
vue使用rem实现 移动端屏幕适配
2018/09/26 Javascript
通过实例解析chrome如何在mac环境中安装vue-devtools插件
2020/07/10 Javascript
浅析vue中的nextTick
2020/12/28 Vue.js
Python实现的生成自我描述脚本分享(很有意思的程序)
2014/07/18 Python
使用python实现省市三级菜单效果
2016/01/20 Python
Python原始字符串与Unicode字符串操作符用法实例分析
2017/07/22 Python
Python实现自定义顺序、排列写入数据到Excel的方法
2018/04/23 Python
Python编程中类与类的关系详解
2019/08/08 Python
Python Web框架之Django框架cookie和session用法分析
2019/08/16 Python
pytorch 实现tensor与numpy数组转换
2019/12/27 Python
VC++笔试题
2014/10/13 面试题
思想品德课教学反思
2014/02/10 职场文书
乳制品整治工作方案
2014/05/29 职场文书
教师听课评语大全
2014/12/31 职场文书
初中教师个人总结
2015/02/10 职场文书
CentOS7安装MySQL8的超级详细教程(无坑!)
2022/06/10 Servers