一、日志介绍
1、日志级别:日志的优先级、重要性或者严重程度
2、日志的作用:调试程序,跟踪定位bug,分析用户行为与数据统计
3、常见的日志级别(从小级别到大级别排序):
debug:调试级别,打印非常详细的日志信息,通常用于代码调试
info:信息级别,打印一般的日志信息,突出强调程序的运行过程
warming:警告级别,打印警告信息,表明可能出现潜在的错误
error:错误级别,打印错误异常信息,该级别的错误可能导致程序无法运行
critical:严重错误级别,这表明系统可能无法继续运行
4、当指定日志级别后,程序会记录所有日志级别大于或者等于指定级别的东西
5、日志的格式:
%(levelno)s 打印日志级别的数值
%(levelname)s 打印日志级别名称
%(pathname)s 打印当前执行程序的路径,其实就是sys.argv[0]
%(filename)s 打印当前执行程序名
%(funcName)s 打印日志的当前函数
%(lineno)d 打印日志的当前行号
%(asctime)s 打印日志的记录时间
%(thread)d 打印线程ID
%(threadName)s 打印线程的名称
%(process)d 打印进程的ID
%(message)s 打印日志的信息
二、logging用法
基本用法:
# 导库,一个标准的第三方库用于日志的打印
import logging
# 基本用法
logging.debug('这是一条调试信息')
logging.info('这是日志信息')
logging.warning('打印警告')
logging.error('这是一条错误信息')
logging.critical('这是一条严重错误信息')
输出信息如下:
WARNING:root:打印警告
ERROR:root:这是一条错误信息
CRITICAL:root:这是一条严重错误信息
上述代码中我们打印了五种日志,但是输出结果只有三种,这是因为指定日志级别后,程序会记录大于或者等于指定级别的日志,下面我们来指定打印debug级别的日志:
# 导包
import logging
# 设置日志级别 打印日志
logging.basicConfig(level=logging.DEBUG)
# 基本用法
logging.debug('这是一条调试信息')
logging.info('这是日志信息')
logging.warning('打印警告')
logging.error('这是一条错误信息')
logging.critical('这是一条严重错误信息')
输出结果如下:
DEBUG:root:这是一条调试信息
INFO:root:这是日志信息
WARNING:root:打印警告
ERROR:root:这是一条错误信息
CRITICAL:root:这是一条严重错误信息
我们还可以指定日志的格式,演示输出时的日志格式化:
import logging
fm = "%(asctime)s %(levelname)s [%(name)s] [%(filename)s] [%(funcName)s:%(lineno)d]"
# 设置日志级别 打印日志
logging.basicConfig(level=logging.DEBUG,format=fm)
# 基本用法
logging.debug('这是一条调试信息')
logging.info('这是日志信息')
logging.warning('打印警告')
logging.error('这是一条错误信息')
logging.critical('这是一条严重错误信息')
输出信息如下:
2023-07-17 22:48:59,062 DEBUG [root] [logger.py] [:36]
2023-07-17 22:48:59,063 INFO [root] [logger.py] [:37]
2023-07-17 22:48:59,063 WARNING [root] [logger.py] [:38]
2023-07-17 22:48:59,063 ERROR [root] [logger.py] [:39]
2023-07-17 22:48:59,063 CRITICAL [root] [logger.py] [:40]
我们还可以输出日志到指定的文件:
# 导库,一个标准的第三方库用于日志的打印
import logging
fm = "%(asctime)s %(levelname)s [%(name)s] [%(filename)s] [%(funcName)s:%(lineno)d]"
# 设置日志级别 打印日志 设置日志打印的文件路径
logging.basicConfig(level=logging.DEBUG,format=fm,filename="testlog//log01.log")
# 基本用法
logging.debug('这是一条调试信息')
logging.info('这是日志信息')
logging.warning('打印警告')
logging.error('这是一条错误信息')
logging.critical('这是一条严重错误信息')
指定了日志打印的文件后点击运行,打开testlog文件夹下的log01文件,能发现已经打印了: