loguru 模块

loguru模块

转自:https://blog.csdn.net/cui_yonghua/article/details/107498535
参考:https://kangyucheng.blog.csdn.net/article/details/112794185

相比较于logging模块,loguru模块操作起来更加简单,它不需要我们手动的对logger进行配置

1.基本使用

loguru默认的输出格式有时间、级别、模块名、行号以及日志信息,不需要手动创建 logger,直接使用即可,另外其输出还是彩色的,看起来会更加友好。

from loguru import logger

logger.debug('this is a debug message')
logger.info('this is another debug message')
logger.warning('this is another debug message')
logger.error('this is another debug message')
logger.success('this is success message!')
logger.critical('this is critical message!')

显示结果如下:

在这里插入图片描述

如果要将日志输出到文件中,只需要

from loguru import logger

logger.add('my_log.log')
logger.debug('this is a debug')

2.详细使用

2.1 add方法的定义

在使用logging模块的时候,我们需要手动的配置Handler、Formatter以及Filter,需要调用不同的函数进行配置,在loguru中,我们只需要一个add()函数即可。通过add()函数,我们可以设置Handler,设置Formatter,Filter Message以及设置Level。

def add(
        self,
        sink,
        *,
        level=_defaults.LOGURU_LEVEL,
        format=_defaults.LOGURU_FORMAT,
        filter=_defaults.LOGURU_FILTER,
        colorize=_defaults.LOGURU_COLORIZE,
        serialize=_defaults.LOGURU_SERIALIZE,
        backtrace=_defaults.LOGURU_BACKTRACE,
        diagnose=_defaults.LOGURU_DIAGNOSE,
        enqueue=_defaults.LOGURU_ENQUEUE,
        catch=_defaults.LOGURU_CATCH,
        **kwargs
    ) -> int: Handle_id:
    pass

参数说明:

  • sink

    作用:sink是用来确定日志的输出路径

    sink的选择如下:

    1. sink可以传入一个file对象,例如sys.stderr或者open(‘file.log’,‘w’)都可以
    2. sink可以直接传入一个str字符串或者pathlib.Path对象,其实就是代表文件路径的,如果识别到是这种类型,它会自动创建对应路径的日志文件并将日志数据输入进去。
    3. sink可以是一个方法,可以自行定义输出实现
    4. sink还可以是一个自定义的类。具体的实现规范可以参见官方文档
  • level

    作用:标志日志的级别,低于该级别的日志将不会输出,如下图,值越小的日志级别越低

    级别方法
    TRACE5logger.trace()
    DEBUG10logger.debug()
    INFO20logger.info()
    SUCCESS25logger.success()
    WARNING30logger.warning()
    ERROR40logger.error()
    CRITICAL50logger.critical()
  • format

    作用:格式化输出日志信息

    取值作用
    elapsed时间(从项目开始到现在过了多少时间)
    exception例外(不遵守现在格式的输出,如果有的)
    extra被用户定义的其他属性,必须是字典
    file执行文件
    function执行函数
    level日志级别
    line行数
    message信息
    module日志在那个模块被调用
    name模块的名称
    process进程id或者进程名,默认是id
    thread线程id或者线程名
    time日期
  • rotation

    作用:设置日志的生成大小、生成时间、保存最长时间等

    logger.add("file_1.log", rotation="500 MB")    
    # Automatically rotate too big file
    logger.add("file_2.log", rotation="12:00")     
    # New file is created each day at noon
    logger.add("file_3.log", rotation="1 week")    
    # Once the file is too old, it's rotated
    # 这是每隔一周创建一个日志文件
    
  • retention

    作用:指定日志保留时长

    logger.add("file_X.log", retention="10 days")  
    # Cleanup after some time
    
  • compression

    作用:配置文件压缩格式

    logger.add("file_Y.log", compression="zip")    
    # Save some loved space
    

2.2 异常捕获

两种异常捕获方法

1.catch装饰器方法

通过catch装饰器的方式实现异常捕获:

    from loguru import logger
    logger.add("runtime.log",encoding="gbk")
    @logger.catch()
    def my_function(x,y,z):
        return (x+y)/z
    my_function(1,1,0)
2.exception方法
from loguru import logger
 
logger.add("runtime.log") 
 
def my_function1(x, y, z):
    try:
        return 1 / (x + y + z)
    except ZeroDivisionError:
        logger.exception("What?!")
 
my_function1(0, 0, 0)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值