日志:记录了执行过程 - 逻辑执行流程
记录了报错
1、在代码里,添加日志代码 - 在哪些地方需要你输出日志。info - error - debug….
2、收集代码中的日志信息,然后输出。
logging模块
1)日志收集器
定义日志收集器:要从代码当中按照要求收集对应的日志,并输出到渠道当中。
a、要收集哪个级别以上的日志?
b、日志是要什么样的格式显示?
c、日志输出到哪些地方去?
2)日志级别(Level):
debug - info - warning - error - critical(FATA)
调试 基本 警告 报错 严重错误
3)日志输出的格式(Formatter)
日志、日志级别、代码文件、第几行:信息
4)日志输出渠道(Handle):
文件(FileHandle)、控制台(StreamHandle)
logging模块
有一个默认的日志收集器,root
a、收集的是warning及wraning级别以上的日志。
b、日志格式:日志级别:收集器名字:输出的内容
c、输出渠道:控制台
自定义日志收集器
步骤:1)创建一个日志收集器
1、调用logger = logging.getLogger(日志名字)来生成一个日志收集器对象
2、设置你的日志收集级别。logger.setLevel(日志级别)
3、使用logging.Formatter类来定制要输出的控制台/文件当中的日志格式
4、使用handle1 = logging.StreamHandler()来创建一个控制台渠道对象,并将控制台要输出的格式日志设置为3当中的formatter。设置handle1 = logging.StreamHandler(Formatter对象)
5、将4当中的handle1添加到logger当中,那么日志就可以输出控制台当中
6、使用handle2 = logging.StreamHandler(文件路径)来创建一个控制台渠道对象,并将控制台要输出的格式日志设置为3当中的formatter。设置handle2 = logging.StreamHandler(Formatter对象)
7、将6当中的handle2添加到logger当中,那么日志就可以输出文件当中
——指定日志级别在指定文件输出
8、使用handle3 = logging.StreamHandler(文件路径)来创建一个控制台渠道对象,并将控制台要输出的格式日志设置为3当中的formatter。设置handle3 = logging.StreamHandler(Formatter对象)
指定handle3的日志级别为ERROR
handle3.setLevel(logging.error)
9、将8当中的handle3添加到logger当中,那么日志就可以输出文件当中
例子:
import logging
_# 第一步:
# 创建一个日志收集器
_logger = logging.getLogger(“nmb-py37”)
# 第二步
# 自定义要收集的日志级别、自定义收集日志的格式、自定义输出渠道
# 自定义要收集日志的级别
logger.setLevel(logging.INFO)
fmt_str = **”%(asctime)s %(name)s %(levelname)s %(filename)s %(lineno)d %(message)s”
# 实例化一个日志格式类
_formatter = logging.Formatter(fmt_str)
_# 实例化渠道(Handle).
# 控制台(StreamHandler)
_handle1 = logging.StreamHandler()
_# 实例化渠道(Handle).设置渠道当中的日志显示格式
_handle1.setFormatter(formatter)
_# 将渠道与日志收集器绑定起来
_logger.addHandler(handle1)
_# 文件渠道
_handle2 = logging.FileHandler(“py37.log”,encoding=“utf-8”)
_# 实例化渠道(Handle).设置渠道当中的日志显示格式
_handle2.setFormatter(formatter)
_# 将渠道与日志收集器绑定起来
_logger.addHandler(handle2)
_# 文件渠道
_handle3 = logging.FileHandler(“py37-error.log”,encoding=“utf-8”)
# 实例化渠道(Handle).设置渠道当中的日志显示格式
_handle3.setFormatter(formatter)
# 设置handle3的日志输出级别为ERROR
_handle3.setLevel(logging.ERROR)
_# 将渠道与日志收集器绑定起来
_logger.addHandler(handle3)
logger.info(“hello!!”)
logger.error(“你错了!!”)
日志文件滚动生成
# handlers.RotatingFileHandler 根据文件大小
# handlers.TimedRotatingFileHandler 根据时间间隔
只需要修改:# 文件渠道
_handle2 = handlers.RotatingFileHandler(“py37.log”,maxBytes=1, backupCount=10,encoding=“utf-8”)
from logging import handlers
import logging
# 第一步:
# 创建一个日志收集器
_logger = logging.getLogger(“nmb-py37”)
# 第二步
# 自定义要收集的日志级别、自定义收集日志的格式、自定义输出渠道
# 自定义要收集日志的级别
logger.setLevel(logging.INFO)
fmt_str = **”%(asctime)s %(name)s %(levelname)s %(filename)s %(lineno)d %(message)s”
# 实例化一个日志格式类
_formatter = logging.Formatter(fmt_str)
_# 实例化渠道(Handle).
# 控制台(StreamHandler)
_handle1 = logging.StreamHandler()
_# 实例化渠道(Handle).设置渠道当中的日志显示格式
_handle1.setFormatter(formatter)
_# 将渠道与日志收集器绑定起来
_logger.addHandler(handle1)
_# 文件渠道
_handle2 = handlers.RotatingFileHandler(“py37.log”,maxBytes=1, backupCount=10,encoding=“utf-8”)
_# 实例化渠道(Handle).设置渠道当中的日志显示格式
_handle2.setFormatter(formatter)
_# 将渠道与日志收集器绑定起来
_logger.addHandler(handle2)
logger.info(“hello!!”)
logger.error(“你错了!!”)
logger.info(“helloppp!!”)
logger.error(“你错了vvv!!”)
logger.info(“hello!!”)
logger.error(“你错了!!”)