logging模块进阶2

Posted

tags:

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

1.两种级别设置:

全局级别:生成logger对象后设置的级别

局部级别:生成handler对象设置的级别

我们都知道输出的级别不能低于设定的级别,那么全局级别和局部级别哪一个对输出产生影响?

经过多次尝试发现:向屏幕和文件传输日志时,日志级别需要先和全局级别做比较,级别高于全局再去和局部级别做比较。需要经过两次过滤,才能向屏幕和文件传入日志。

import logging

# 1.生成logger对象
logger = logging.getLogger("130")
logger.setLevel(logging.INFO)   #不设置级别,默认最低级别是warning。

# 2.生成handler对象
#  把handler对象绑定到logger
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)            #对屏幕和文件分别设置级别
fh = logging.FileHandler("130.log")
fh.setLevel(logging.ERROR)

logger.addHandler(ch)
logger.addHandler(fh)

# 3.生成formatter对象
#   把formatter对象绑定到handler
file_formatter = logging.Formatter("%(asctime)s %(name)s %(levelname)s %(message)s")
console_formatter = logging.Formatter("%(asctime)s %(name)s %(levelname)s %(lineno)s %(message)s")

ch.setFormatter(console_formatter)
fh.setFormatter(file_formatter)

logger.debug("miss eat")
logger.warning("hello girl") 

  

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

Atom编辑器入门到精通 Atom使用进阶

Python进阶----包,logging模块

08 datetime与logging模块(进阶)

常用python日期日志获取内容循环的代码片段

Python常用模块 之 datetime模块和logging模块实战使用

vs code 自定义代码片段