Python基于yaml文件配置logging日志过程解析

 更新时间:2020年06月23日 09:30:08   作者:vevian  
这篇文章主要介绍了Python基于yaml文件配置logging日志过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

一、使用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求解汉诺塔游戏

    这篇文章主要为大家详细介绍了python求解汉诺塔游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-07-07
  • Python中顺序表的实现简单代码分享

    Python中顺序表的实现简单代码分享

    这篇文章主要介绍了Python中顺序表的实现简单代码分享,展示了代码运行结果,然后分享了相关实例代码,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01
  • opencv实现回形遍历像素算法

    opencv实现回形遍历像素算法

    这篇文章主要为大家详细介绍了opencv实现回形遍历像素算法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-03-03
  • python模拟登陆阿里妈妈生成商品推广链接

    python模拟登陆阿里妈妈生成商品推广链接

    这篇文章主要介绍了python模拟登陆阿里妈妈生成商品推广链接,需要的朋友可以参考下
    2014-04-04
  • Jupyter Notebook读取csv文件出现的问题及解决

    Jupyter Notebook读取csv文件出现的问题及解决

    这篇文章主要介绍了Jupyter Notebook读取csv文件出现的问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01
  • 用python登录Dr.com思路以及代码分享

    用python登录Dr.com思路以及代码分享

    如今一般的大学校园或者公寓都是通过客户端来限制路由器使用,基本上都是Dr.com客户端,有的是登录样式,有的是插件样式。下面我们来说说python定制自己的客户端
    2014-06-06
  • django框架中ajax的使用及避开CSRF 验证的方式详解

    django框架中ajax的使用及避开CSRF 验证的方式详解

    这篇文章主要介绍了django框架中ajax的使用及避开CSRF 验证的方式,结合实例形式分析了Django框架ajax后台交互与排除验证csrf相关操作技巧,需要的朋友可以参考下
    2019-12-12
  • python使用pandas实现筛选功能方式

    python使用pandas实现筛选功能方式

    在数据分析的过程中通常要对数据进行清洗与处理,而其中比较重要和常见的操作就有对数据进行筛选与查询,下面这篇文章主要给大家介绍了关于python使用pandas实现筛选功能方式的相关资料,需要的朋友可以参考下
    2022-06-06
  • python批量修改文件名的实现代码

    python批量修改文件名的实现代码

    这篇文章主要介绍了python批量修改文件名的实现代码,需要的朋友可以参考下
    2014-09-09
  • 用python打印1~20的整数实例讲解

    用python打印1~20的整数实例讲解

    在本篇内容中小编给大家分享了关于python打印1~20的整数的具体步骤以及实例方法,需要的朋友们参考下。
    2019-07-07

最新评论