目录:导读
前言
1、logging模块介绍
实际项目中常常需要把日志存储到文件,便于查阅,如运行时间、描述信息以及错误或者异常发生时候的特定上下文信息。
logging的优势就在于可以控制日志的级别,把不需要的信息进行过滤,且可以决定它输出到什么地方、如何输出,还可以通过控制等级把特定等级的信息输出到特定的位置等。
logging一共分为四个部分:
Loggers:日志收集器,可供程序直接调用的接口,app通过调用提供的api来记录日志
Handlers:日志处理器, 决定将日志记录分配至正确的目的地
Filters:日志过滤器,对日志信息进行过滤, 提供更细粒度的日志是否输出的判断
Formatters:日志格式器,制定最终记录打印的格式布局
2、日志等级
logging将logger的等级划分成5个level,由低到高分别是DEBUG、INFO、WARNING、ERROE、CRITICAL,默认是WARNING级别,CRITICAL最高
相关等级说明如下:
Level | 说明 |
---|---|
DEBUG | 输出详细的运行信息,主要用于调试,追踪问题时使用 |
INFO | 输出正常的运行的信息,一切按预期进行的情况 |
WARNING | 一些意想不到的或即将会发生的情况,比如警告:内存空间不足,但不影响程序运行 |
ERROR | 由于某些问题,程序的一些功能会受到影响,还可以继续运行 |
CRITICAL | 一个严重的错误,表明程序本身可能无法继续运行 |
这些等级的日志中低包含高,比如INFO,会收集INFO及以上等级的日志,DEBUG等级的日志将不进行收集。
import logging
"""
logging模块默认收集的日志是warning以上等级的
"""
a = 100
logging.debug(a)
logging.info('这是INFO等级的信息')
logging.warning('这是WARNING等级的信息')
logging.error('这是ERROR等级的信息')
logging.critical('这是CRITICAL等级的信息')
输出结果:
C:\software\python\python.exe D:/learn/test.py
WARNING:root:这是WARNING等级的信息
ERROR:root:这是ERROR等级的信息
CRITICAL:root:这是CRITICAL等级的信息
Process finished with exit code 0
3、日志收集器
日志是怎么被收集和输出的呢?
答案就是日志收集器,设置一个收集器,把指等级的日志信息输出到指定的地方,控制台或文件等,其工作过程大致如下:
logging中默认的日志收集器是root,收集等级默认是WARNING,我们可以通过setLevel来改变它的收集等级。
# 获取默认的日志收集器root
my_log = logging.getLogger()
# 设置默认的日志收集器等级
my_log.setLevel("DEBUG") # 日志将全部被收集
a = 100
logging.debug(a)
logging.info('这是INFO等级的信息')
logging.warning('这是WARNING等级的信息')
logging.error('这是ERROR等级的信息')
logging.critical('这是CRITICAL等级的信息')
输出结果:
C:\software\python\python.exe D:/learn/test.py
DEBUG:root:100
INFO:root:这是INFO等级的信息
WARNING:root:这是WARNING等级的信息
ERROR:root:这是ERROR等级的信息
CRITICAL:root:这是CRITICAL等级的信息
Process finished with exit code 0
除了使用默认的日志收集器,我们也可以自己创建一个收集器logging.getLogger,如下:
import logging
my_logger = logging.getLogger('my_logger') # 创建logging对象
my_logger.setLevel('INFO') # 设置日志收集等级
a = 100
logging.debug(a)
logging.info('这是INFO等级的信息')
logging.warning('这是WARNING等级的信息')
logging