首页 > 其他分享 >loguru日志模块使用

loguru日志模块使用

时间:2023-02-27 14:12:41浏览次数:29  
标签:__ log loguru add 模块 test 日志 logger

loguru日志模块使用 

 

相比于logging模块,loguru模块使用起来更方便,并且可以根据不同日志级别,进行不同颜色输出

一、安装

pip install loguru

二、基本使用

  • 代码

    from loguru import logger
    
    # logger.add(sys.stderr) 内部已默认执行,输出日志内容到控制台
    logger.add('test.log', encoding='utf-8', level='ERROR') # 将ERROR及以上级别的日志输出到日志文件
    logger.info('info')
    logger.debug('debug')
    logger.warning('warning')
    logger.error('error')
    logger.critical('critical')
  • 控制台输出

  • test.log文件

    2023-01-12 04:47:57.788 | ERROR    | __main__:<module>:24 - error
    2023-01-12 04:47:57.788 | CRITICAL | __main__:<module>:25 - critical

    按照设置的日志级别,只保存了ERROR及以上级别日志内容

三、配置使用

  • 概述

    • 使用logger.add()方法就可以实现日志输出的配置,类比logging模块的handler
    • 默认已经实现了logger.add(sys.stderr)方法,即控制台输出的handler,可通过logger.remove()方法清除已添加的handler
  • rotation参数

    • 按照指定规则生成新的日志文件,避免单个日志文件过大
      logger.add('./logs/test.log', encoding='utf-8', rotation='5 MB') # 文件超过5MB,就会新生成一个文件
      logger.add('./logs/test.log', encoding='utf-8', rotation='1 week') # 一周后,会新生成一个文件,单位还可以是s等
      logger.add('./logs/test.log', encoding='utf-8', rotation='17:44') # 每天的17:44生成新文件(注意:如果该时间段没有日志记录,则仍记录在原日志文件)
    • 示例
      import time
      from loguru import logger
      
      logger.add('./logs/test_{time}.log', encoding='utf-8', rotation='10 s') # 超过10s,则新建日志
      for i in range(30):
          logger.info(f'test_{i}')
          time.sleep(1)

      运行结束后,生成3个日志文件,{time}会生成当前的时间

  • retention参数

    • 按照指定规则保留日志(即删除操作)
      logger.add('./logs/test.log', encoding='utf-8', retention='10 days') # 该日志文件中,只保留最近10天的日志内容
      logger.add('./logs/test.log', encoding='utf-8', rotation='5 MB', retention=2) # 保留最近3个文件

      注意:retention取整数时,保留最近【int + 1】个文件

    • 示例
      from loguru import logger
      logger.add('./logs/test.log', encoding='utf-8', rotation='1 KB', retention=2)
      
      for i in range(100):
          logger.info(f'test_{i}')

      当日志文件大小超过1 KB时,会新生成日志文件,同时旧的日志文件名会带上时间,最后保留最新的3个日志文件

  • compression参数

    • 对日志文件进行压缩,节省空间
      from loguru import logger
      
      logger.add('./logs/test.log', encoding='utf-8', rotation='10KB', compression='zip')
      for i in range(1000):
          logger.info(f'test_{i}')

      上述示例中,首先日志文件超过10KB就会新建日志文件,然后对之前的文件进行zip压缩,压缩后大小为1KB

四、异常追溯

  • 代码

    from loguru import logger
    
    def test():
        try:
            print(3 / 0)
        except ZeroDivisionError as e:
            logger.exception(e)
    
    if __name__ == "__main__":
        test()
  • 控制台输出

 
from loguru import logger


@logger.catch
def add(x, y, z):
    return 1 / (x + y + z)


# logger.remove()  # 取消注释将不会打印到控制台上
logger.add("debug.log", format="{time:YYYY-MM-DD HH:mm:ss} | {level} | {file}: {line}: {function}] | {message}", level="DEBUG",
           filter=lambda x: "DEBUG" in str(x['level']).upper())
logger.add("info.log", format="{time:YYYY-MM-DD HH:mm:ss} | {level} | {file}: {line}: {function}] | {message}", level="INFO",
           filter=lambda x: "INFO" in str(x['level']).upper())
logger.add("error.log", format="{time:YYYY-MM-DD HH:mm:ss} | {level} | {file}: {line}: {function}] | {message}", level="ERROR",
           filter=lambda x: "ERROR" in str(x['level']).upper())
logger.add("warning.log", format="{time:YYYY-MM-DD HH:mm:ss} | {level} | {file}: {line}: {function}] | {message}", level="WARNING",
           filter=lambda x: "WARNING" in str(x['level']).upper())

if __name__ == '__main__':
    # trace = logger.add(sys.stdout, colorize=True, format="<green>{time}</green> <level>{message}</level>")
    logger.info("That's it, beautiful and simple logging!")
    logger.debug("debug")
    logger.warning("This is new log")
    logger.info(f'If you are using Python {__file__}, prefer {__file__} of course!')
    add(0, 0, 0)
    logger.success("nice")

 

标签:__,log,loguru,add,模块,test,日志,logger
From: https://www.cnblogs.com/xiao-xue-di/p/17159457.html

相关文章

  • 模块化规范
    一、参考资料:1、介绍模块化发展的历程(opensnewwindow)2、各模块化规范思维导图相关问题1、模块化的作用抽取公共代码、隔离作用域、依赖管理2、模块化历史无模块......
  • oracle11g SAP测试机归档日志暴增排查(一)
       现象是oracle11g空间一天很快就被归档日志增加的文件爆满了,空间没有,oracle也不正常,当然sap也出现异常了。  看空间是就是/oracle没有空间了,用du*-sh很快找到......
  • oracle11g SAP测试机归档日志暴增排查(二)
        接上面一的内容,通过logminer可以知道是因为oracle11g设置awr快照引起的插入数据,所以要看这个插入是否正常。   之前也发现SYSAUX表空间也没有多少了,应该这......
  • shell脚本定时任务转移项目日志
    1、之前同时项目部署在根目录,根目录磁盘空间40G,运行一年后日志占了18G的磁盘空间,根目录只有几个G的磁盘空间,现在写shell脚本定时转移日志文件到挂载的磁盘目录下2、编写s......
  • Oracle alert.log日志出现:Thread 1 cannot allocate new log
    参考链接:https://blog.csdn.net/joinplay/article/details/232559411、查找oracle错误日志存放目录(sqlplus登录sysdba执行):showparameterbackground_dump_dest查看aler......
  • BOSHIDA 三河博电科技 电源模块的基本知识
    BOSHIDA三河博电科技电源模块的基本知识 输出电压的调节对有TRIM或ADJ(可调节)输出引脚的模块电源产品,可通过电阻或电位器对输出电压进行一定范围内的调节,一般调节范......
  • 一文搞懂java日志框架
    发展历史总结标准接口实现产品JCLlog4j、julSlf4jlogbacklog4j-api(log4j2)log4j-core(log4j2)发展System.out最早最简单的打印方式,不可配置日......
  • Spring Boot 实现日志链路追踪,无需引入组件,让日志定位更方便!
    来源:blog.csdn.net/qq_35387940/article/details/125062368前言从文章标题就知道,这篇文章是介绍些什么。这是我一位朋友的问题反馈:好像是的,确实这种现象是普遍存在的......
  • 【RocketMQ】Dledger日志复制源码分析
    消息存储在【RocketMQ】消息的存储一文中提到,Broker收到消息后会调用CommitLog的asyncPutMessage方法写入消息,在DLedger模式下使用的是DLedgerCommitLog,进入asyncPutMess......
  • Traefik搭建日志
    Traefik是一个开源边际路由,它能够将请求根据不同的条件转发给后端不同的服务。Traefik和Nginx都可以用于反向代理,但是你可以说“Nginx反向代理服务器”,而不能说“Trae......