好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

使用Loguru优雅记录Python日志

二级标题

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

或者使用 python 的 logging 模块 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.info('hello?world')

日志文件

logger.add('log-{time}.log', encoding="utf-8") 会给日志文件名自动增加时间信息以区分,比如 log-2021-03-15_23-36-51_241786.log , encoding 参数设置保存为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"person:?{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)

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

参考

https://github测试数据/Delgan/loguru

查看更多关于使用Loguru优雅记录Python日志的详细内容...

  阅读:34次