Linux 教程:日志转 CSV 到 JSON
发布: (2026年1月18日 GMT+8 19:10)
2 min read
原文: Dev.to
Source: Dev.to
概览
本教程演示了将原始应用日志转换为结构化 JSON 数据的过程。该工作流对于生成 SLM 测试的测试数据非常有用。
步骤 1:生成原始日志
过程从生成日志数据开始。可以使用 echo 命令手动模拟应用输出。
echo "2026-01-18 05:42:09 | INFO | system initialized" >> tutorial/myapp.log
echo "2026-01-18 05:42:09 | ERROR | disk space low" >> tutorial/myapp.log
echo "2026-01-18 05:42:09 | INFO | user logged in" >> tutorial/myapp.log
步骤 2:原始日志文件
生成后,日志文件包含原始的、分隔的条目。
2026-01-18 05:42:09 | INFO | system initialized
2026-01-18 05:42:09 | ERROR | disk space low
2026-01-18 05:42:09 | INFO | user logged in
步骤 3:转换为 CSV
将原始日志解析为 CSV 格式。可以使用 sed 或 awk 等 shell 工具来替换分隔符。
示例命令:
sed 's/ | /","/g; s/^/"/; s/$/"/' tutorial/myapp.log > tutorial/myapp.csv
"2026-01-18 05:42:09","INFO","system initialized"
"2026-01-18 05:42:09","ERROR","disk space low"
"2026-01-18 05:42:09","INFO","user logged in"
步骤 4:Python 转换脚本
Python 脚本使用 csv 和 json 模块将平面的 CSV 文件转换为结构化的 JSON 数组。
import csv
import json
def convert(csv_file, json_file):
data = []
with open(csv_file, mode='r', encoding='utf-8') as f:
reader = csv.DictReader(f, fieldnames=["timestamp", "level", "message"])
for row in reader:
data.append(row)
with open(json_file, mode='w', encoding='utf-8') as f:
json.dump(data, f, indent=4)
if __name__ == "__main__":
convert('tutorial/myapp.csv', 'tutorial/myapp.json')
步骤 5:最终 JSON 输出
生成的 JSON 文件已准备好供网页仪表盘或其他数据分析工具使用。
[
{
"timestamp": "2026-01-18 05:42:09",
"level": "INFO",
"message": "system initialized"
},
{
"timestamp": "2026-01-18 05:42:09",
"level": "ERROR",
"message": "disk space low"
},
{
"timestamp": "2026-01-18 05:42:09",
"level": "INFO",
"message": "user logged in"
}
]