何为 loguru
可能你已经习惯了使用 python
自带的 logging
模块来进行日志处理,我也不例外。但是今天,我要给大家介绍一个全新的日志处理库 loguru
。
相比 logging
,loguru
更加优雅,简单,日志的输出也更加美观。
安装 loguru
pip install loguru 复制代码
demo
代码:
from loguru import logger logger.debug('this is a debug message') logger.info('this is another debug message') logger.warning('this is another debug message') logger.error('this is another debug message') logger.info('this is another debug message') logger.success('this is success message!') logger.critical('this is critical message!') 复制代码
控制台输出:
网络异常,图片无法展示
|
怎么样,是不是很优雅,loguru
默认以时间,级别,函数名,模块名,行号,信息的顺序来输出日志。
重定向日志到文件
代码:
from loguru import logger # 配置重定向路径 logger.add('loguru.log') logger.debug('this is a redirect to file message') 复制代码
控制台输出:
网络异常,图片无法展示
|
日志文件内容:
网络异常,图片无法展示
|
自定义格式
代码:
from loguru import logger # 配置重定向路径&格式 logger.add('loguru.log',format='{level} {time} {message}') logger.debug('this is a redirect to file message') 复制代码
控制台输出:
网络异常,图片无法展示
|
日志文件内容:
网络异常,图片无法展示
|
我们可以看到,在
add
中配置的格式只对写入日志文件的内容生效。
日志轮转
用了 loguru
我们还可以非常方便地使用 rotation
配置,比如我们想一天输出一个日志文件,或者文件太大了自动分隔日志文件,我们可以直接使用 add
方法的 rotation
参数进行配置。
按大小轮转
logger.add('runtime_{time}.log', rotation="500 MB") 复制代码
以上配置可以实现每 500M
轮转一次。
按时间轮转
logger.add('runtime_{time}.log', rotation='00:00') 复制代码
以上配置实现了每天 0
点轮转一次。
按周轮转
logger.add('runtime_{time}.log', rotation='1 week') 复制代码
以上配置实现了每周轮转一次。
优雅的异常处理
代码:
from loguru import logger # 配置重定向路径&格式 logger.add('loguru.log',format='{time} | {level} | {message}') logger.debug('test traceback') @logger.catch def err(x:int,y:int): return 1/(x+y) if __name__ == '__main__': err(0,0) 复制代码
控制台输出:
网络异常,图片无法展示
|
日志文件内容:
网络异常,图片无法展示
|
如上,
loguru
帮我们指出了异常出现的位置,方便定位问题,而且优雅的展示了异常的日志。