python中的logging模块

Posted jeff-z-blog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python中的logging模块相关的知识,希望对你有一定的参考价值。

研究了好些天的logging模块,今天终于能用稍微清晰一点的思路记录一下了~~~

一、root  logger

import logging

logging.debug(这是debug)
logging.info(这是info)
logging.warning(这是warning)
logging.error(这是error)
logging.critical(这是critical)

最后结果是:控制台输出warning、error、critical级别的日志

这是warning
这是error
这是critical

日志输出说明3个问题:

1、日志默认level是warning

2、未配置formater时,日志直接输出内容(message),不进行格式拼接

3、日志默认的handler是StreamHandler 

level的级别排序为CRITICAL > ERROR > WARNING > INFO > DEBUG

技术图片

定义的记录级别越低,信息越多,级别越高,信息越少

直接使用logging输出日志时,默认创建的就是root logger

二、basicConfig方法配置logging记录格式

basciConfig配置记录的几种格式参数:

技术图片

其中format参数用来设置日志输出格式,日志输出格式的配置参数如下:

技术图片

level参数用来设置默认的root logger的level

format和level的设置方式如下:

logging.basicConfig(level=logging.INFO,format="%(asctime)s %(thread)d %(message)s")

logging.info(已经配置basicConfig)

输出如下:

2011-08-31 19:18:29,81 - 24631 - 已经配置basicConfig

三、logger类

root  logger

root = logging.getLogger() 

parent logger

logger = logging.getLogger(s) 

child logger

logger_child = logging.getLogger(s.s1)

logger的类关系通过“.”进行设置,name相同,logger唯一相同

通常使用方法:

root = logging.getLogger()
root.setLevel(logging.INFO)
sh = logging.StreamHandler()
sh.setLevel(logging.WARNING)
sh.setFormatter(logging.Formatter(%(asctime)s - %(message)s))
root.addHandler(sh)
root.warning(这是log)

logger输出日志时,因为logger和handler均有level,所以,日志的level要先与logger的level进行比较,大于logger的level才能与handler的level进行比较,大于handler的level才能输出到对应的位置,若小于handler的level,则当前logger不输出,若日志的level直接小于logger的level,那么当前logger直接不输入日志,无需再进行后边的比较

 

参数propagate

默认参数propagate的参数值为true,及当前logger打印日志输出之后,还需要将日志传入到所有父节点和根节点进行打印输出,所修改propagate为false,则当前级别logger的日志不再向上级进行传输

 

参考文章:

[Python 模块] logging模块、Logger类

使用python的logging模块

python中logging模块的一些简单用法

使用python的logging模块

 

以上是关于python中的logging模块的主要内容,如果未能解决你的问题,请参考以下文章

Python中的logging模块

Python中的logging模块

Python入门之Python中的logging模块

python常用代码片段总结

python中的模块

python中的logging