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

开源项目精选试用 专栏收录该内容
2 篇文章 0 订阅

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
  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值