日志:用于记录系统运行时的信息
作用:
- 调试程序
- 了解系统程序运行情况,是否正常
- 系统运行故障分析与问题定位
- 用来做用户行为分析和数据统计
级别:
- DEBUG:调试级别,打印非常详细的日志信息,用于代码的调试
- INFO:信息级别,打印一般的日志信息,突出强调程序的运行过程
- WARNING:警告级别,打印警告日志信息,表明会出现潜在错误的情形,一般不影响正常使用
- ERROR:错误级别,打印错误异常信息,该级别错误会导致一些功能无法正常使用
- CRITICAL:严重错误级别,一个严重的错误,系统无法继续运行
基本用法:
logging模块
import logging
设置日志级别
logging.basicConfig(level=logging.DEBUG)
设置日志格式
logging.basicConfig(format="%(levelname)s:%(name)s:%(message)s")
日志输出到文件
logging.basicConfig(filename="a.log")
高级用法:
四大组件:
- 日志器 logger:提供程序使用日志的入口
- 处理器 handle:将logger创建的日志记录发送到合适的目的输出
- 格式器 formatter:决定日志记录的最终输出格式
- 过滤器 filter:提供了更细粒度的控制工具来决定输出哪条日志记录,丢弃哪条日志记录
示例:将日志输出到控制台和文件中
测试代码
import logging
import logging.handlers
# 1、创建日志器
import time
logger = logging.getLogger()
# 2、设置日志器级别
logger.setLevel(logging.DEBUG)
# 3、创建两个处理器(输出到控制台以及输出到文件)
# 3.1 创建输出到控制台的处理器
sf = logging.StreamHandler()
# 3.2 创建输出到文件的处理器
hf = logging.handlers.TimedRotatingFileHandler("log/log.log", when='midnight', interval=1, backupCount=3)
# 4、设置级别
sf.setLevel(logging.INFO)
hf.setLevel(logging.INFO)
# 5、创建格式器
fmt = '%(asctime)s %(levelname)s [%(name)s] [%(filename)s(%(funcName)s:%(lineno)d)] - %(message)s'
formatter = logging.Formatter(fmt=fmt)
# 6、添加格式器到处理器当中
sf.setFormatter(formatter)
hf.setFormatter(formatter)
# 7、将处理器添加到日志器
logger.addHandler(sf)
logger.addHandler(hf)
# 8、输出日志信息
while True:
time.sleep(3)
logger.info("这是一条信息级别的日志")
logging.warning("这是一条警告级别的日志")
结果