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:原始日志文件

生成后,日志文件包含原始的、分隔的条目。

文件: tutorial/myapp.log

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 格式。可以使用 sedawk 等 shell 工具来替换分隔符。

示例命令:

sed 's/ | /","/g; s/^/"/; s/$/"/' tutorial/myapp.log > tutorial/myapp.csv

文件: 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 脚本使用 csvjson 模块将平面的 CSV 文件转换为结构化的 JSON 数组。

文件: tutorial/csv_to_json.py

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 文件已准备好供网页仪表盘或其他数据分析工具使用。

文件: tutorial/myapp.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"
    }
]
Back to Blog

相关文章

阅读更多 »

Linux教程:日志转CSV到JSON

设置目录 bash mkdir -p tutorial cd tutorial 生成示例日志 bash 在 tutorial 文件夹内生成日志 echo '2026-01-18 05:42:09 | INFO | system...'

为什么 Bash 语法如此晦涩

Bash的历史根源 Bash在Linux的表面之下深深扎根。只需一两行代码,它就能完全控制你的机器。它常常被视为b...