记录一个日志模块loguru

it2026-06-15  12

在 Python 中,一般情况下我们可能直接用自带的 logging 模块来记录日志,包括我之前的时候也是一样。在使用时我们需要配置一些 Handler、Formatter 来进行一些处理,比如把日志输出到不同的位置,或者设置一个不同的输出格式,或者设置日志分块和备份。但其实个人感觉 logging 用起来其实并不是那么好用,其实主要还是配置较为繁琐。

今天发现了一个好用的日志模块loguru,个人感觉非常好用:

安装

pip3 install loguru

基本使用:

rom loguru import logger logger.debug('this is a debug message')

不需要配置什么东西,直接引入一个 logger,然后调用其 debug 方法即可。

在 loguru 里面有且仅有一个主要对象,那就是 logger,loguru 里面有且仅有一个 logger,而且它已经被提前配置了一些基础信息,比如比较友好的格式化、文本颜色信息等等。

以看到其默认的输出格式是上面的内容,有时间、级别、模块名、行号以及日志信息,不需要手动创建 logger,直接使用即可,另外其输出还是彩色的,看起来会更加友好。

以上的日志信息是直接输出到控制台的,并没有输出到其他的地方,如果想要输出到其他的位置,比如存为文件,我们只需要使用一行代码声明即可。

将日志输出到文件

logger.add("loguruDemo.log")

为了日志文件便于区分也可以增加时间:

logger.add('runtime_{time}.log')

控制日志文件输出大小和时间

logger.add('runtime_{time}.log', rotation="500 MB")

自定义文件输出格式

日志文件输出格式除去吗,默认格式,同时也就可以进行自定义

logger.add('runtime.log', format="{time} {level} {message}", filter="my_module", level="INFO")

生成压缩格式

logger.add('runtime.log', compression='zip')

异步配置

logger.add("somefile.log", enqueue=True) # 异步写入

Traceback 记录

@logger.catch def my_function(x, y, z): # An error? It's caught anyway! return 1 / (x + y + z) my_function(0, 0, 0)

输出结果很舒服:

最新回复(0)