python更方便高效的日志管理loguru

对比使用logging模块手动封装使用,配置复杂麻烦,发现一个loguru模块,使用更方便简单。

1、安装

pip install loguru

 

2、导入及日志输出控制台

#导入模块
from loguru import logger

#直接调用方法即可

logger.debug('测试一下')
logger.error('错误测试')

运行,在控制台输出效果图,默认输出格式如下:

包括时间、日志级别、模块名、行号、日志内容

python更方便高效的日志管理loguru

 

3、日志输出到文件

from loguru import logger
logger.add('runtime_{time}.log', rotation='00:00')  #将结果输出到文件里(当前目录下),文件命名按照当前时间命名,并且设置roation——每天0点新增一个日志 logger.debug('测试一下')

效果图如下:

python更方便高效的日志管理loguru

 

 

自定义输出到文件格式:

loguru官网的描述:https://loguru.readthedocs.io/en/stable/api/logger.html#loguru._logger.Logger.add

python更方便高效的日志管理loguru

 

 参数说明

  • 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信息,显示效果图如下:

python更方便高效的日志管理loguru

 

 

  

上一篇:oracle数据库连接字符串


下一篇:openstack基础命令