对比使用logging模块手动封装使用,配置复杂麻烦,发现一个loguru模块,使用更方便简单。
1、安装
pip install loguru
2、导入及日志输出控制台
#导入模块
from loguru import logger
#直接调用方法即可
logger.debug('测试一下')
logger.error('错误测试')
运行,在控制台输出效果图,默认输出格式如下:
包括时间、日志级别、模块名、行号、日志内容
3、日志输出到文件
from loguru import logger
logger.add('runtime_{time}.log', rotation='00:00') #将结果输出到文件里(当前目录下),文件命名按照当前时间命名,并且设置roation——每天0点新增一个日志 logger.debug('测试一下')
效果图如下:
自定义输出到文件格式:
loguru官网的描述:https://loguru.readthedocs.io/en/stable/api/logger.html#loguru._logger.Logger.add
参数说明
- sink:支持多种数据结构,可以传入一个字符串、一个文件对象、一个路径对象代表路径、一个方法、logging模块的Handler
- level:默认为debug类型
- format:输出格式设置
说明:一般可能修改的是sink,其他与logging模块的一样,可参考logging模块中自定义配置
这里举例sink为一个路径对象,进行操作:
1)创建路径对象(set_path.py)
import os
import datetime
class Projectpath:
#创建日志路径
root_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) #获取项目的根目录
log_path=os.path.join(root_path,'Log') #定义存放log的文件夹Log filename = os.path.join(log_path, '{}.log'.format(datetime.date.today())) #设置日志文件名字,按照时间格式譬如2020-10-20.log命名 if not os.path.exists(log_path): #判断文件夹Log是否存在,不存在进行创建 os.mkdir(log_path) if not os.path.exists(filename): #判断日志文件是否存在,不存在进行创建 with open(filename, mode='w', encoding='utf-8') as ff:
print("日志文件创建成功!")
p_path=Projectpath() #调用类
2)使用路径对象结合loguru使用
import loguru
from set_path import p_path
if __name__=='__main__':
logger.add(sink=p_path.filename, rotation='00:00', encoding='utf-8')
logger.info('1020测试')
4、roation配置
4.1、配置根据文件大小输出日志
logger.add('runtime_{time}.log', rotation="500 MB") #配置文件大小为500MB,超过会自动生成一个新日志文件
4.2、配置根据时间输出日志
logger.add('runtime_{time}.log', rotation='00:00') #设置每天零点创建一个日志文件 logger.add('runtime_{time}.log', rotation='1 week') #设置每隔一周创建一个日志文件
5、retention配置(配置日志最长保留时间)
logger.add('runtime.log', retention='7 days') #配置日志文件最长保留时间为7天
6、compression 配置(配置日志文件为压缩格式)
logger.add('runtime.log', compression='zip') #设置文件格式压缩为zip,节省空间
7、traceback(报错回溯)
使用装饰器,直接在函数或类前面加上@logger.catch
这里举例:
@logger.catch def div(x,y): return x/y test=div(4,0)
若运行报错,在日志中会出现tarceback信息,显示效果图如下: