你还在使用print
来调试代码,记录“日志”?python
或者使用python
的logging
模块getLogger
,setLevel
?git
告诉你,都不用,赶忙使用loguru
来记录日志吧github
pip install loguru
就是这么简单!app
loguru
的核心理念是,你须要且只须要一个logger
ide
很是简单易懂编码
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')
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和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)
遍能够详细地记录日志调用堆栈,以及上下文变量取值。