还在使用python logging?尝试下loguru,更优雅记录日志

Loguru

你还在使用print来调试代码,记录“日志”?

或者使用pythonlogging模块getLogger,setLevel?

告诉你,都不用,赶紧使用loguru来记录日志吧

安装

pip install loguru

就是这么简单!

快速上手

loguru的核心理念是,你需要且只需要一个logger

日志输出API

非常简单易懂

from loguru import logger

logger.debug("Happy logging with Loguru!")

debug, warning,error也都一应俱全

logger.debug("Debug message!")
logger.warning("I am warning you!")
logger.error("Ahh, Error occues~")

定制化

调用add方法增加handler时可以做定制,比如colorize设置为True表示输出颜色,而format参数代表日志输出的内容格式

import sys

logger.add(sys.stdout, colorize=True, format="<green>{time:YYYY-MM-DD at HH:mm:ss}</green> | <level>{message}</level>")

日志文件

  • logger.add('log-{time}.log', encoding="utf-8")会给日志文件名自动增加时间信息以区分,比如log-2021-03-15_23-36-51_241786.logencoding参数设置保存为UTF-8编码

  • logger.add('log-{time}.log', rotation="500MB")会在超过500M时,自动创建新的日志文件

  • logger.add('log-{time}.log', rotation="00:00")会在每天00:00自动创建新的日志文件

  • logger.add('log-{time}.log', compression="zip")会以zip文件保存日志,节省磁盘空间

这些参数当然可以组合使用,比如

logger.add('log-{time}.log', encoding="utf-8", rotation="00:00", compression="zip")

字符串format

日志内容的format和str.format()用法类似

可以使用最新的f-string方式,代替%做内容format

person = {'name': 'Alice', 'age': 12}
logger.info(f"info: {person}")

异常日志捕获

是不是经常忘记写try...except...

是不是经常程序出错了,日志中也没有任何上下文记录?

就像下面这个例子

def f1(a, b):
    return a / b
  
f1(1, 0)

那么你可以增加一条注解轻松解决

@logger.catch
def f2(a, b):
    return a / b
  

f2(1, 0)

遍可以详细地记录日志调用堆栈,以及上下文变量取值。

在这里插入图片描述

参考

  1. https://github.com/Delgan/loguru
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值