Python 日志库: Loguru

建议点击 查看原文 查看最新内容。

原文链接: https://typonotes.com/posts/2024/11/21/python-loguru/

loguru 是一款常用的 python 日志库。

https://loguru.readthedocs.io/en/stable/overview.html

注意: loguru 没有 fatal, 而是 critical

安装

1
pip install loguru

基础使用

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
from loguru import logging as log

## 设置格式
logger.add("file.log", format="{time} {level} {message}", level="INFO")

## 设置 level
logger.level("ERROR") # 注意, 不支持小写

logger.info("Hello, World!")
logger.critical("This is a critical message!")

装饰器用法

1
2
3
4
@logger.catch
def test_logger(x: int):
    log.info("This is a test logger function!")
    return 10 / x

绑定额外参数

1
2
3
4
5
6
7
8
9
#### Structured logging as needed

logger.add(sys.stdout, format="{extra[ip]} {extra[user]} {message}")

log = logger.bind(ip="192.168.0.1", user="someone")
log.info("Contextualize your logger easily")
log.bind(user="someone_else").info("Inline binding of extra attribute")
log.info("Use kwargs to add context during formatting: {user}", user="anybody")
###
  1. 额外参数需要使用 {extra[xxx]} 引用
  2. xxx 必须要存在并赋值, 否则报错。

例如这里没有给 ip 赋值默认值。

1
2
3
4
5
6
7
8
9
logger.add(sys.stdout, format="{extra[ip]} {extra[user]} {message}")
log = logger.bind(user="someone")
log.info("Contextualize your logger easily")


Traceback (most recent call last):
  File "/Users/franktang/data/pypath/py-demo/.venv/lib/python3.13/site-packages/loguru/_handler.py", line 184, in emit
    formatted = precomputed_format.format_map(formatter_record)
KeyError: 'ip'