如果想自定义日志级别 , 自定义日志格式,保存日志到文件该怎么办?与 logging 模块不同,不需要 Handler,不需要 Formatter,只需要一个add()函数就可以了,例如我们想把日志储存到文件:
我们不需要像 logging 模块一样再声明一个 FileHandler 了,就一行add()语句搞定,运行之后会发现目录下 test.log 里面同样出现了刚刚控制台输出的 debug 信息 。
与add()语句相反, remove()语句可以删除我们添加的配置:
此时控制台会输出两条 debug 信息:
而 test.log 日志文件里面只有一条 debug信息,原因就在于我们在第二条 debug 语句之前使用了remove()语句 。
Loguru 对输出到文件的配置有非常强大的支持,比如支持输出到多个文件,分级别分别输出,过大创建新文件,过久自动删除等等 。下面我们来详细看一下add()语句的详细参数:
基本语法:
基本参数释义:
当且仅当 sink 是协程函数时 , 以下参数适用:
当且仅当 sink 是文件路径时,以下参数适用:
这么多参数可以见识到add()函数的强大之处,仅仅一个函数就能实现 logging 模块的诸多功能,接下来介绍几个比较常用的方法 。
add()函数的 rotation 参数,可以实现按照固定时间创建新的日志文件,比如设置每天 0 点新创建一个 log 文件:
设置超过 500 MB 新创建一个 log 文件:
设置每隔一个周新创建一个 log 文件:
add()函数的 retention 参数,可以设置日志的最长保留时间,比如设置日志文件最长保留 15 天:
设置日志文件最多保留 10 个:
也可以是一个datetime.timedelta对象 , 比如设置日志文件最多保留 5 个小时:
add()函数的 compression 参数,可以配置日志文件的压缩格式,这样可以更加节省存储空间,比如设置使用 zip 文件格式保存:
其格式支持: gz 、 bz2 、 xz 、 lzma 、 tar 、 tar.gz 、 tar.bz2 、 tar.xz
Loguru 在输出 log 的时候还提供了非常友好的字符串格式化功能,相当于str.format() :
输出:
在 Loguru 里可以直接使用它提供的装饰器就可以直接进行异常捕获,而且得到的日志是无比详细的:
日志输出:
在控制台的输出是这样的:
相比 Logging,Loguru 无论是在配置方面、日志输出样式还是异常追踪,都远优于 Logging,使用 Loguru 无疑能提升开发人员效率 。本文仅介绍了一些常用的方法,想要详细了解可参考Loguru 官方文档 或关注Loguru GitHub。
在 python 项目中如何记录日志 写本文的目的是我在写 python 项目的时候需要记录日志 , 我忘记怎么处理了,每次都需要去网上查一遍,好记性不如烂笔头 ,这里把查阅的内容记录下来,方便以后查找 。
python 项目中记录日志,可以使用 logging 模块,logging 模块定义的函数和类为应用程序和库的开发实现了一个灵活的事件日志系统 。logging 模块是Python的一个标准库模块,由标准库模块提供日志记录API的关键好处是所有Python模块都可以使用这个日志记录功能 。所以,你的应用日志可以将你自己的日志信息与来自第三方模块的信息整合起来 。
在__init__.py文件中做如下配置:
控制台输出日志如下:
参考文档
python中更优雅的记录日志在以往我们使用日志,更多的是使用 python 自带的 logging 模块,它可以设置错误等级、输出方式等 。
但使用方式相对比较复杂,想要更好的使用需要如 log4net 一样单独配置 , 这在 python 中感觉不是很优雅 。
下面介绍一个 python 库: loguru。guru 是印度语中大师的意思,loguru 直译就是“日志大师” 。
推荐阅读
- 应用web服务器,web应用服务器的用途是什么
- 游戏开发前沿技术面试问题,游戏开发前沿技术面试问题答案
- postgrefloat8的简单介绍
- vb.net程序防检测 vbox防检测
- c语言三种循环结构语句,c语言程序的三种循环结构语句是
- 电脑怎么查看内置显卡型号,怎么看自己电脑的显卡内存
- 婚纱页面的java源代码 婚纱的网页设计
- python字典对应键的值,python字典键值对个数
- 我国移动服务器,中国移动服务器地址是什么