日志logging
- 定义:记录代码执行的过程
- 什么时候记录:加到代码里面
- 作用:一旦记录下来,就能够使用日志去排查问题
- 日志的级别 ->有左到右越来越严重
- debug(调试)-》info(打印信息,类似print) -》waring(警告信息)-》 error(错误)-》 critical(致命)
- 日志与print打印有什么不同,为什么不用print?
- 1.代码量太多了;
- 2.使用print会占用内存,不使用的时候需要一行一行去注释
- 3.使用日志的时候,可以自己设置打印什么样级别的日志出来,比较灵活
- 模块:logging python自带,不需要安装
语法
- 直接使用 logging.debug(mes)来打印信息,info等的使用方法与debug一致,都只有一个位置参数
- 使用python默认时,默认会输出warning以上的信息。原因:root logger(如下图,源码中有)是系统自定义的收集日志的收集器,默认收集并输出warnning级别以上的日志信息(包含warnning)
- 日志输出的渠道默认是控制台(console)

- 代码示例如下:
import logging
logging.debug('这是一个debug的信息')
logging.info('这是一个info的信息')
logging.warning('这是一个warning的信息')
logging.error('这是一个error的信息')
logging.critical('这是一个critical的信息')
**************run_result****************
WARNING:root:这是一个warning的信息
ERROR:root:这是一个error的信息
CRITICAL:root:这是一个critical的信息
日志输出的步骤
- 因此,如果想自定义打印日志(我的日志我做主),需要改动的地方是: 日志级别和日志输出方式,所以要做以下步骤:
- 第一步:自定义一个日志收集器(getLogger函数),注意,一定要给一个名字,否则默认返回
root logger
,代码:my_logger = logging.getLogger('yiyi')
- 第二步:设置级别(setLevel函数),注意,后面一定要传级别,否则默认返回wainning,代码:
my_logger.setLevel('DEBUG')
- 第三步:指定输出渠道,
ch = logging.StreamHandler()
- 第四步:设置输出级别,
my_logger.setLevel('DEBUG')
- 第五步:对接,添加渠道,
my_logger.addHandler(ch)
- 收集日志的级别与输出日志的级别不一致时,最终输出结果是两个级别的交集
- 代码示例:
import logging
my_logger = logging.getLogger('yiyi')
my_logger.setLevel('DEBUG')
ch = logging.StreamHandler()
my_logger.setLevel('DEBUG')
my_logger.addHandler(ch)
my_logger.debug('这是一个debug的信息')
my_logger.info('这是一个info的信息')
my_logger.warning('这是一个warning的信息')
my_logger.error('这是一个error的信息')
my_logger.critical('这是一个critical的信息'