loguru-日志技术
# 1. 安装
pip install loguru
1
# 2. 配置
# tools/Log
import os.path
import time
from loguru import logger
# 如果文件夹不存在,则创建文件夹
object_path = os.path.abspath(os.path.join(os.getcwd(), ".."))
log_dir = object_path + "/Logs"
if not os.path.isdir(log_dir):
os.mkdir(log_dir)
# 日志文件时间
log_name = time.strftime("%Y_%m_%d %H_%M_%S")
logger.add(
f"{log_dir}/{time.strftime('%Y_%m_%d %H_%M_%S')}.log", # 日志输出到指定文件
encoding="utf-8", # 日志输出编码
enqueue=True, # 开启异步写入
retention="5 days", # 设置保留时长
rotation="1MB", # 限定日志大小
compression="zip", # 指定压缩格式
)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 3. 引用
引用 Log 中的 logger ,而不是 loguru 中的 logger
from Log import logger
1
# 4. 案例
from Tools.Log import logger
@logger.catch
def my_function(x, y, z):
return 1 / (x + y + z)
my_function(0, 0, 0)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
运行结果:
2022-02-17 00:16:37.516 | ERROR | __main__:<module>:9 - An error has been caught in function '<module>', process 'MainProcess' (42185), thread 'MainThread' (4369089920):
Traceback (most recent call last):
> File "/Users/chengqiande/PycharmProjects/pythonProject/Report/demo.py", line 9, in <module>
my_function(0, 0, 0)
└ <function my_function at 0x105711af0>
File "/Users/chengqiande/PycharmProjects/pythonProject/Report/demo.py", line 6, in my_function
return 1 / (x + y + z)
│ │ └ 0
│ └ 0
└ 0
ZeroDivisionError: division by zero
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
编辑 (opens new window)
上次更新: 2022/02/19, 20:44:42