在程序运行的时候除了密密麻麻的日志外,这些关键函数的输入输出也十分重要,是回溯与数据核对的唯一
loguru
日志库,将不常见的【TRACE】级别作为保存中间数据的日志记录key
与value
保存format
对应的pattern
解析日志即可pattern与日志的关系可以参考:python使用patterns解析loguru日志,从日志中提取结构化数据
from loguru import loggerdef use_func(num_1, num_2):result = num_1 * (num_2 + 2)logger.trace({ # 记录操作"函数名": "use_func","value_1": num_1,"value_2": num_2,"result": result,})return resultdef main():# 初始化日志logger.add("my_cal_record.log", filter=lambda record: "TRACE" in record['level'].name, level="TRACE",format="{time:YYYY-MM-DD HH:mm:ss.SSS} {level} {message}", enqueue=True, mode='w')# 这里我们执行一个循环操作for i in range(40):use_func(i, i * 2)if __name__ == '__main__':main()
得到日志结果my_cal_record.log
:
2022-12-08 16:30:11.727 TRACE {'函数名': 'use_func', 'value_1': 0, 'value_2': 0, 'result': 0}
2022-12-08 16:30:11.728 TRACE {'函数名': 'use_func', 'value_1': 1, 'value_2': 2, 'result': 4}
2022-12-08 16:30:11.728 TRACE {'函数名': 'use_func', 'value_1': 2, 'value_2': 4, 'result': 12}
2022-12-08 16:30:11.728 TRACE {'函数名': 'use_func', 'value_1': 3, 'value_2': 6, 'result': 24}
2022-12-08 16:30:11.728 TRACE {'函数名': 'use_func', 'value_1': 4, 'value_2': 8, 'result': 40}
2022-12-08 16:30:11.728 TRACE {'函数名': 'use_func', 'value_1': 5, 'value_2': 10, 'result': 60}
2022-12-08 16:30:11.728 TRACE {'函数名': 'use_func', 'value_1': 6, 'value_2': 12, 'result': 84}
......
用如下程序解析:
import pandas as pd
from loguru import logger
import dateutil
from dateutil.parser import parserpattern = r"(?P
可以得到中间结果的记录:
函数名 value_1 value_2 result
0 use_func 0 0 0
1 use_func 1 2 4
2 use_func 2 4 12
3 use_func 3 6 24
4 use_func 4 8 40
......
上一篇:什么是舆情监控,舆情监控是什么?