Skip to content

在Python项目中使用loguru记录日志

loguru 是一个 Python 日志记录 第三方开源库,相比与 Python 原生的 logging 模块,loguru 提供了更简单、更强大、更优雅的日志记录方式。它是对 Python 标准库logging的替代方案,具有开箱即用、功能丰富、配置灵活等特点。

1. loguru的基本使用

1.1 安装loguru

参考 Python虚拟环境管理器miniforge 创建好虚拟环境,然后安装loguru包。

sh
# 创建虚拟环境
[root@localhost ~]# /srv/miniforge/bin/conda create --name python3.10.16 python=3.10.16

# 查看当前的虚拟环境列表
[root@localhost ~]# /srv/miniforge/bin/conda env list

# conda environments:
#
base                   /srv/miniforge
python3.10.16          /srv/miniforge/envs/python3.10.16
supervisorpython3.10.16   /srv/miniforge/envs/supervisorpython3.10.16

[root@localhost ~]#

我们在python3.10.16虚拟环境下安装loguru:

sh
[root@localhost ~]# /srv/miniforge/envs/python3.10.16/bin/pip freeze

# 安装第三方包loguru
[root@localhost ~]# /srv/miniforge/envs/python3.10.16/bin/pip install loguru
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Collecting loguru
  Using cached https://pypi.tuna.tsinghua.edu.cn/packages/0c/29/0348de65b8cc732daa3e33e67806420b2ae89bdce2b04af740289c5c6c8c/loguru-0.7.3-py3-none-any.whl (61 kB)
Installing collected packages: loguru
Successfully installed loguru-0.7.3
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager, possibly rendering your system unusable. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv. Use the --root-user-action option if you know what you are doing and want to suppress this warning.
[root@localhost ~]# /srv/miniforge/envs/python3.10.16/bin/pip freeze
loguru==0.7.3
[root@localhost ~]#

可以看第三方包loguru已经安装成功了!其版本是0.7.3 。

1.2 最简单的使用

sh
[root@localhost ~]# /srv/miniforge/envs/python3.10.16/bin/python
Python 3.10.16 (main, Dec 11 2024, 16:24:50) [GCC 11.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from loguru import logger
>>>
>>> logger.debug("That's it, beautiful and simple logging!")
2025-10-30 22:08:13.981 | DEBUG    | __main__:<module>:1 - That's it, beautiful and simple logging!
>>>

此时,会在标准输出里面输出一行debug日志。

看一下截图:

Snipaste_2025-10-30_22-12-49.png

可以看到漂亮的日志输出!

1.3 输出不同级别的日志

loguru提供了七层日志层级,或者说七种日志类型。

生产环境中,常常在不同场景下使用不用的日志类型,用于处理各种问题。

每种类型的日志有一个整数值,表示日志层级,称为log level no。

TRACE (5): 用于记录程序执行路径的细节信息,以进行诊断。
DEBUG (10): 开发人员使用该工具记录调试信息。
INFO (20): 用于记录描述程序正常操作的信息消息。
SUCCESS (25): 类似于INFO,用于指示操作成功的情况。
WARNING (30): 警告类型,用于指示可能需要进一步调查的不寻常事件。
ERROR (40): 错误类型,用于记录影响特定操作的错误条件。
CRITICAL (50): 严重类型,用于记录阻止核心功能正常工作的错误条件。

尝试输出不同级别的日志,在Python控制台运行以下代码:

python
logger.trace("A trace message.")
logger.debug("A debug message.")
logger.info("An info message.")
logger.success("A success message.")
logger.warning("A warning message.")
logger.error("An error message.")
logger.critical("A critical message.")

输出如下:

Snipaste_2025-10-30_22-25-13.png

如果你在linux的终端上,可以看到不同类型的日志,已经有不同的颜色加以区分,默认的配置已经很方便的让我们识别和使用了。

请注意,上述输出不包括TRACE级别的日志信息 logger.trace("A trace message.")的信息没有输出。这是因为Loguru默认使用DEBUG作为其最低日志级别,导致任何严重性低于DEBUG的日志信息都会被忽略。

如果您想更改默认级别,可以使用下面所示的add()方法的级别参数:

python
import sys

from loguru import logger

# 移除默认处理器(可选,避免重复输出)
logger.remove()

# 添加新处理器,指定级别为 TRACE
logger.add(sys.stdout, level="TRACE")

此时再执行之前的日志输出就可以看到TRACE级别的信息输出了:

Snipaste_2025-10-30_22-42-34.png

再尝试修改日志级别为INFO,然后输出相关日志:

sh
# 移除默认处理器(可选,避免重复输出)
logger.remove()

# 添加新处理器,指定级别为 INFO
logger.add(sys.stdout, level="INFO")

此时再输出日志:

Snipaste_2025-10-30_22-45-25.png

可以看到logger.trace("A trace message.")logger.debug("A debug message.")的日志都未输出。

通过以上实验,可以根据实际需求调整不同的日志级别输出。

参考:

本首页参考 https://notes.fe-mm.com/ 配置而成