使用Loguru优雅记录Python日志

logo.png

二级标题

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

或者使用pythonlogging模块getLogger,setLevel?git

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

安装

pip install loguru

就是这么简单!app

快速上手

loguru的核心理念是,你须要且只须要一个loggeride

日志输出API

很是简单易懂编码

from loguru import logger
logger.debug("Happy logging with Loguru!")

debug, warning,error也都包罗万象debug

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


定制化

调用add方法增长handler时能够作定制,好比colorize设置为True表示输出颜色,而format参数表明日志输出的内容格式3d

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')


截屏20210316 16.23.03.png

日志文件

  • 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"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)

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

image20210316000504039.png

参考

  1. https://github.com/Delgan/loguru
相关文章
相关标签/搜索