zoukankan      html  css  js  c++  java
  • python更方便高效的日志管理loguru

    对比使用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信息,显示效果图如下:

      

  • 相关阅读:
    纯真IP数据库格式详解
    iframe框架详解
    搜刮的网址
    Drupal设置首页默认内容
    PHP开发之路之一WAMP的安装和配置
    PHP中json序列化后中文的编码显示问题
    Mysql转化blob为可读
    使用Xtrabackup来备份你的mysql
    MySQL压力测试工具mysqlslap的使用
    Cacti 监控 MySQL
  • 原文地址:https://www.cnblogs.com/nimantou/p/13848152.html
Copyright © 2011-2022 走看看