写了很多年的python日志都是使用内置的logging模块来完成的,使用时都需要经过繁琐的配置。有时候,还可能出现丢失日志的情况,直到loguru的出现。
【阅读全文】
loguru真的是十分的简单的,安装之后直接导入到python代码块中即可直接使用。
【python|零配置python日志,安装即用】1、安装环境
我们还是按照pip的方式来进行安装,默认使用清华大学的镜像站。
pip install loguru -i https://pypi.tuna.tsinghua.edu.cn/simple
安装完成后就可以直接开始使用了。
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 / paramfunc(0)
上面这个函数在分母是0的时候肯定是会抛出异常的,我们使用注解@logger.catch异常信息就会被写入。
文章图片
同时,在日志文件中也会记录详细的异常信息。
文章图片
【往期精彩】
英语没学好到底能不能做coder,别再纠结了先学起来...
数据清洗工具flashtext,效率直接提升了几十倍数!
一个help函数解决了python的所有文档信息查看...
python 自定义异常/raise关键字抛出异常
python 本地音乐播放器制作过程(附完整源码)
推荐阅读
- 图像识别|又一个AI开源神器面世!网友(太香了...)
- python|英语没学好到底能不能做coder,别再纠结了先学起来
- 数据库|5款开源BI系统倾力推荐,企业信息化的利器
- 数据分析刚入门(这几个BI软件你一定得知道!)
- 计算机设计|2022年第15届中国大学生计算机设计大赛
- 概率论|因果推断——现代统计的思想飞跃
- python|在IIS上部署基于django WEB框架的python网站应用
- 资讯|世界上最大的开源基金会 Apache 是如何运作的()
- Python|手把手教你用Python做个可视化的“剪刀石头布”小游戏