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
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")
###
|
- 额外参数需要使用
{extra[xxx]}
引用 - 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'
|