写了很多年的 python 日志都是应用内置的 logging 模块来实现的,应用时都须要通过繁琐的配置。有时候,还可能呈现失落日志的状况,直到 loguru 的呈现。
【浏览全文】
loguru 真的是非常的简略的,装置之后间接导入到 python 代码块中即可间接应用。
1、装置环境
咱们还是依照 pip 的形式来进行装置,默认应用清华大学的镜像站。
pip install loguru -i https://pypi.tuna.tsinghua.ed…
装置实现后就能够间接开始应用了。
2、惯例日志打印
在控制台打印惯例日志时不必增加任何的配置间接应用,应用实现后咱们能够来验证一下打印成果。
from loguru import logger
# 应用 debug 级别打印一行日志
logger.debug('I am debug message.')
上面是我在 pycharm 下面取下来的日志效果图。
能够看一下成果还是令人满意的,这色彩搭配也比拟 nice,并且日志工夫准确到秒级。想要看到的日志信息也根本囊括了。
3、写入日志文件
想写入日志文件也是比较简单不必配置,只须要调用 add 函数增加文件即可。
# 增加日志文件
logger.add('./message-info.log')
# 打印一行 debug 日志
logger.debug('I am debug message.')
此时,不仅控制台会呈现一行日志,并且在 message-info.log 文件中也写入了一条 dubug 日志信息。
若是在写入文件时想要指定本人的输入格局,则能够间接在 add 函数间接设置即可,同时能够设置输入到日志文件中的级别。
# 依照特定的格局将 info 级别的日志写入到日志文件中
log = logger.add('./info.log',format='{time} | {level} | {message}',level='INFO')
# 这时,多打印一些 info 级别的日志
logger.info('I am info message <1>.')
logger.info('I am info message <2>.')
logger.info('I am info message <3>.')
logger.info('I am info message <4>.')
logger.info('I am info message <5>.')
上面是在 pycharm 控制台打印的日志成果
上面是日志文件中的展现成果,跟咱们设定的日志格局是一样的。
4、进行写入日志文件
在上述过程中咱们增加自定义日志格局的日志信息到 info.log 文件中时特意返回了一个 log 变量。
这个 log 其实是返回了一个日志文件的 id,在须要进行向该日志文件中写入日志时,只须要调用 remove 函数将该文件的日志 id 作为参数传入即可进行向日志文件中写入日志。
# 进行向日志文件中写入日志
logger.remove(log)
此时,前面的 日志文件将不会再写入日志文件中了。
5、滚动记录日志文件
在理论状况中,咱们并不是只会有一个日志文件。当一个日志文件超过肯定的大小、或是在一个特定的工夫周期都能够通过参数的设定来生成新的日志文件持续记录日志。
# 超过 10M 生成一个新的日志文件
logger.add('info.log',rotation='10 MB')
# 每天凌晨一点生成一个新的日志文件
logger.add('info.log',rotation='01:00')
并且,为了避免日志文件在长时间的记录之后占用磁盘,个别还能够设置 30 天为周期清理日志文件,这样就又解决了磁盘爆满的问题。
# 设置该日志文件保留的工夫为 30 天
logger.add('info.log',retention='30 days')
通常日志文件如果依照原始的形式存储,那么占用空间还是比拟大的。loguru 也为咱们想到了,就是通过指定文件压缩的格局之后将日志文件进行压缩。
logger.add('info.log',compression='zip')
6、异样日志捕捉
在理论 coding 过程中,特地是生产环境,若是呈现一些异样信息没有被写入到日志文件中的状况时是特地好受的。在生产环境中,日志是解决问题的惟一方法。
loguru 提供了注解的形式能够将产生异样的函数信息间接写入日志文件中,比方,有这样一个函数在运行过程中产生了异样。
@logger.catch
def func(param):
return 10 / param
func(0)
下面这个函数在分母是 0 的时候必定是会抛出异样的,咱们应用注解 @logger.catch 异样信息就会被写入。
同时,在日志文件中也会记录具体的异样信息。
【往期精彩】
英语没学好到底能不能做 coder,别再纠结了先学起来 …
数据荡涤工具 flashtext,效率间接晋升了几十倍数!
一个 help 函数解决了 python 的所有文档信息查看 …
python 自定义异样 /raise 关键字抛出异样
python 本地音乐播放器制作过程(附残缺源码)