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中用keys()方法返回字典键的教程
May 21 Python
python批量提取word内信息
Aug 09 Python
python访问mysql数据库的实现方法(2则示例)
Jan 06 Python
Python实现的连接mssql数据库操作示例
Aug 17 Python
通过python实现随机交换礼物程序详解
Jul 10 Python
python实现证件照换底功能
Aug 20 Python
python opencv调用笔记本摄像头
Aug 28 Python
Python爬虫实现使用beautifulSoup4爬取名言网功能案例
Sep 15 Python
使用python+whoosh实现全文检索
Dec 09 Python
python爬虫添加请求头代码实例
Dec 28 Python
python定义类self用法实例解析
Jan 22 Python
python输入一个水仙花数(三位数) 输出百位十位个位实例
May 03 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中一些可能会被忽略的问题
2013/06/21 PHP
php中动态修改ini配置
2014/10/14 PHP
PHP用mb_string函数库处理与windows相关中文字符及Win环境下开启PHP Mb_String方法
2015/11/11 PHP
PHP观察者模式示例【Laravel框架中有用到】
2018/06/15 PHP
PHP PDOStatement::nextRowset讲解
2019/02/01 PHP
JavaScript字符串插入、删除、替换函数使用示例
2013/07/25 Javascript
用js代码和插件实现wordpress雪花飘落效果的四种方法
2014/12/15 Javascript
javascript实现密码强度显示
2015/03/18 Javascript
IE7浏览器窗口大小改变事件执行多次bug及IE6/IE7/IE8下resize问题
2015/08/21 Javascript
JS判断是否为JSON对象及是否存在某字段的方法(推荐)
2016/11/29 Javascript
详解Vue-cli 创建的项目如何跨域请求
2017/05/18 Javascript
JavaScript表单验证实现代码
2017/05/22 Javascript
AngularJs 终极购物车(实例讲解)
2017/11/08 Javascript
layui 富文本图片上传接口与普通按钮 文件上传接口的例子
2019/09/23 Javascript
vue-cli3单页构建大型项目方案
2020/04/07 Javascript
vue内置组件component--通过is属性动态渲染组件操作
2020/07/28 Javascript
[01:32:22]DOTA2-DPC中国联赛 正赛 Ehome vs VG BO3 第一场 2月5日
2021/03/11 DOTA
Python时间模块datetime、time、calendar的使用方法
2016/01/13 Python
利用Python如何生成hash值示例详解
2017/12/20 Python
Python 使用PIL numpy 实现拼接图片的示例
2018/05/08 Python
Python 处理文件的几种方式
2019/08/23 Python
Python下应用opencv 实现人脸检测功能
2019/10/24 Python
python中selenium库的基本使用详解
2020/07/31 Python
英国时尚家具、家居饰品及礼品商店:Graham & Green
2016/09/15 全球购物
美国户外生活方式品牌:Eddie Bauer
2016/12/28 全球购物
Ado与Ado.net的相同与不同
2014/12/08 面试题
档案室主任岗位职责
2014/02/12 职场文书
《望洞庭》教学反思
2014/02/16 职场文书
正风肃纪剖析材料
2014/02/18 职场文书
春季运动会广播稿大全
2014/02/19 职场文书
党员承诺书怎么写
2014/05/20 职场文书
乡镇党委书记个人整改措施
2014/09/15 职场文书
写给领导的感谢信
2015/01/22 职场文书
幼儿园园长安全责任书
2015/05/08 职场文书
2016感恩父亲节主题广播稿
2015/12/18 职场文书
先进基层党组织事迹材料2016
2016/02/29 职场文书