在记录日志中, 可能你知道 logging
, 或者是使用你自己定义的方式记录到文件内, 但是我介绍的这款记录器可能会达到你的记录要求 — eliot
本期推送整理了初学者可能会用到的Python资料,含有书籍/视频/在线文档和编辑器/源
代码,关于Python
的安装qun:850973621
python3 -m pip install eliot eliot-tree
复制代码
在 medusa.py
中键入以下内容:
#!/usr/bin/env python
# _*_ Coding: UTF-8 _*_
import time
from eliot import *
to_file(open('./medusa_log.log', 'w', encoding='UTF-8'))
def __worker(i):
""" 真正执行任务工作的函数 """
with start_action(action_type="__worker", urls=i):
time.sleep(4)
print(i)
def medusa(_: (list, tuple)):
""" 定义一个执行任务工作的函数 """
with start_action(action_type="worker", urls=_):
for i in _:
__worker(i)
if __name__ == '__main__':
bui = 1, 'MedusaSorcerer'
medusa(bui)
复制代码
解析代码:
bui
的元组对象, 这是交给工作函数的参数medusa
将接收的参数进行遍历, 将每个遍历的元素交付至 __worker
函数to_file
函数声明日志内容保存的方式是文件, 并指定了文件对象再运行 python3 medusa.py
的时候会在同一目录下创建 medusa_log.log
文件, 打开并查阅内容:
{"urls": [1, "MedusaSorcerer"], "action_status": "started", "timestamp": 1595313658.5557268, "task_uuid": "58b309ff-ab22-40bb-89c6-bfd951ce4f4a", "action_type": "worker", "task_level": [1]}
{"urls": 1, "action_status": "started", "timestamp": 1595313658.556727, "task_uuid": "58b309ff-ab22-40bb-89c6-bfd951ce4f4a", "action_type": "__worker", "task_level": [2, 1]}
{"action_status": "succeeded", "timestamp": 1595313662.562169, "task_uuid": "58b309ff-ab22-40bb-89c6-bfd951ce4f4a", "action_type": "__worker", "task_level": [2, 2]}
{"urls": "MedusaSorcerer", "action_status": "started", "timestamp": 1595313662.562169, "task_uuid": "58b309ff-ab22-40bb-89c6-bfd951ce4f4a", "action_type": "__worker", "task_level": [3, 1]}
{"action_status": "succeeded", "timestamp": 1595313666.5714984, "task_uuid": "58b309ff-ab22-40bb-89c6-bfd951ce4f4a", "action_type": "__worker", "task_level": [3, 2]}
{"action_status": "succeeded", "timestamp": 1595313666.5714984, "task_uuid": "58b309ff-ab22-40bb-89c6-bfd951ce4f4a", "action_type": "worker", "task_level": [4]}
复制代码
medusa()
的时候创建了任务日志__worker()
的时候创建的任务日志__worker()
的数据执行完成后的结束日志__worker()
的任务日志__worker()
的数据执行完成后的结束日志medusa
任务执行完成后的任务日志接下来怎么实现过滤呢?
使用 eliot-tree --help
查阅相关帮助信息: [图片上传失败…(image-97c179-1609392589926)]
格式化输出日志内容: [图片上传失败…(image-826bc9-1609392589926)]
检索有包含 action_status
Key 的日志内容: [图片上传失败…(image-fc657f-1609392589926)]
检索指定的任务 UUID: [图片上传失败…(image-91c4e3-1609392589926)]
检索时间区间的任务:
需要注意的是时间的格式需要符合 ISO8601
标准。 [图片上传失败…(image-c376b6-1609392589926)]