Python 中logging使用指南

记录日志是追踪事件的一种手段。通过添加日志,开发者可以清楚地了解发生了哪些事件,包括出现了哪些错误。logging 模块提供了一系列便捷的函数,用于简单的日志记录。它们分别是 debug(), info(), warning(), error() 和 critical()。

1. 简单例子:

输出

  • 运行之后控制台输出日志,另外在相同的目录之下创建一个test.log用于记录日志,里面也存放着相同的内容。
  • 要在日志中显示日期和时间,你需要在格式串中加入 %(asctime)s,格式串中的时间格式参数与中支持的参数相同。 strftime
  • %(message)s 是可以输入到格式化的数据,比如这里的’foorbar’

2. logging模块常用的API

2.1 logging.getLogger([name])

  • 返回一个logger实例,如果没有指定name,返回root logger。
  • 只要name相同,返回的logger实例都是同一个而且只有一个,即name和logger实例是 一一对应的。这意味着,无需把logger实例在各个模块中传递。只要知道name,就能得到同一个logger实例。
  • Logger是一个树形层级结构,在使用接口debug,info,warn,error,critical之前必须创建Logger实例,即创建一个记录器,如果没有显式的进行创建,则默认创建一个root logger,并应用默认的日志级别(WARN),处理器Handler(StreamHandler,即将日志信息打印输出在标准输出上),和格式化器Formatter(默认的格式即为第一个简单使用程序中输出的格式)。
  • 创建Logger实例后,可以使用以下方法进行日志级别设置,增加处理器Handler。
    logger.setLevel(logging.ERROR) # 设置日志级别为ERROR,即只有日志级别大于等于ERROR的日志才会输出
    logger.addHandler(handler_name) # 为Logger实例增加一个处理器 -logger.removeHandler(handler_name) # 为Logger实例删除一个处理器

2.2 Logger.setLevel(lvl)

设置logger的level, level有以下几个级别:

这里写图片描述

3.1 root logger是默认的logger

  • 如果不创建logger实例, 直接调用logging.debug()、logging.info()logging.warning()、logging.error()、logging.critical()这些函数, 那么使用的logger就是 root logger, 它可以自动创建,也是单实例的。

3.2 如何得到root logger/h2>
  • 通过logging.getLogger()或者logging.getLogger(“”)得到root logger实例。

3.3 默认的level

  • root logger默认的level是logging.WARNING

3.4 如何表示父子关系/h3>

logger的name的命名方式可以表示logger之间的父子关系. 比如:parent_logger = logging.getLogger(‘foo’)child_logger = logging.getLogger(‘foo.bar’)

3.5 什么是effective level/h3>
  • logger有一个概念,叫effective level。 如果一个logger没有显示地设置level,那么它就用父亲的level。如果父亲也没有显示地设置level, 就用父亲的父亲的level,以此推….最后到达root logger,一定设置过level。默认为logging.WARNINGchild loggers得到消息后,既把消息分发给它的handler处理,也会传递给所有祖先logger处理,

输出:

可见, 孩子logger没有任何handler,所以对消息不做处理。但是它把消息转发给了它的父亲以及root logger。最后输出两条日志。

参考文章:

  1. 官方参考文档:PEP 282 – A Logging System
  2. 使用python的logging模块
  3. python logging模块使用教程
  4. Python logging 模块使用指南
  5. ipython笔记

文章知识点与官方知识档案匹配,可进一步学习相关知识Python入门技能树首页概览212363 人正在系统学习中

来源:alxe_made

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2018年4月26日
下一篇 2018年4月26日

相关推荐