一、日志级别、输出渠道、内容
1、日志级别(LeveL): DEBUG INFO WARNING ERROR CRITICAL(FATAL)
(如果日志级别是DEBUG,那么所有级别的日志都可以打印,如果日志级别是INFO,那么DEBUG这个级别无法打印,以此类推,一般设置是INFO级别)
2、输出渠道(Handle): 控制台(StreamHandle)、文件(FileHandle)
3、日志内容(Format): 时间–名称–级别名称–文件名称–行号–自己指定的输出信息
fmt = "%(asctime)s %(name)s %(levelname)s %(filename)s--%(lineno)dline :%(message)s"
也可以自己看源码来更改输出内容格式
二、模块logging使用
1、使用步骤
1.1、创建日志收集器:logging.getLogger(“收集器的名字”)
1.2、设置日志级别:.setLevel(logging.DEBUG)(这里设置的是整体的级别,在渠道还可以另外设置级别,但是只能在这个范围内)
1.3、创建一个输出渠道
1.4、给渠道,设置一个日志输出内容的格式
1.5、将设置好的格式与渠道关联起来
1.6、将设置好的渠道,添加到日志收集器当中
2、输出在控制台
import logging #导入logging模块
# 1创建日志收集器
logger = logging.getLogger("cyy")
# 2设置日志输出级别
logger.setLevel(logging.INFO) #
# 3设置日志输出在那些渠道
handle1 = logging.StreamHandler() #实例化一个渠道类
# 4设置渠道的输出内容格式 #时间,名称,级别名称,文件名称,行号,自己指定的输出信息
fmt = "%(asctime)s %(name)s %(levelname)s %(filename)s--%(lineno)dline :%(message)s"
formatter = logging.Formatter(fmt)
# 5将日志格式绑定到渠道当中
handle1.setFormatter(formatter)
# 6将设置好的渠道,添加到日志收集器当中
logger.addHandler(handle1)
logger.info("设置好的格式") #输出日志
输出如下:
2020-12-06 00:18:52,293 cyy INFO log1.py--21line :设置好的日志格式
3 、输出到文件
import logging
# 1创建日志收集器
logger = logging.getLogger("cyy")
# 2设置日志输出级别
logger.setLevel(logging.INFO) # 这里设置的是整体的级别,在渠道还可以另外设置级别,但是只能在这个范围内
# 3设置日志输出到文件
handle2 = logging.FileHandler("cyyc.log",encoding="utf-8") #实例化一个渠道类(文件名、编码格式)
# 4设置渠道的输出内容格式
fmt = "%(asctime)s %(name)s %(levelname)s %(filename)s--%(lineno)dline :%(message)s"
#时间,名称,级别名称,文件名称,行号,自己指定的输出信息
formatter = logging.Formatter(fmt)
# 5将日志格式绑定到渠道当中
handle2.setFormatter(formatter)
# 6将设置好的渠道,添加到日志收集器当中
logger.addHandler(handle2)
logger.info("设置好的日志格式")
输出如下;
注意:一个收集器可以添加多个渠道,且每个渠道还可以设置级别,但是只能在创建的收集器范围内;例如收集器设置的是INFO,那么渠道最低也只能是INFO,不能是DEBUG。
4、默认的root日志收集器
如果自己没有创建日志收集器,将会使用默认的root日志收集器,且默认的输出级别:WARNING