리눅스 튜토리얼: 로그를 CSV에서 JSON으로

발행: (2026년 1월 18일 오후 08:10 GMT+9)
3 min read
원문: Dev.to

Source: Dev.to

Overview

이 튜토리얼은 원시 애플리케이션 로그를 구조화된 JSON 데이터로 변환하는 과정을 단계별로 안내합니다. 이 워크플로우는 SLM 테스트용 테스트 데이터를 생성할 때 유용합니다.

Step 1: Generate Raw Logs

프로세스는 로그 데이터를 생성하는 것부터 시작합니다. 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

Step 2: Raw Log File

생성된 로그 파일에는 원시 구분자 기반 엔트리가 들어 있습니다.

File: 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

Step 3: Convert to CSV

원시 로그를 CSV 형식으로 파싱합니다. sed 또는 awk 같은 셸 유틸리티를 사용해 구분자를 교체하면 됩니다.

Example command:

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

File: 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"

Step 4: Python Conversion Script

Python 스크립트는 csvjson 모듈을 사용해 평면 CSV 파일을 구조화된 JSON 배열로 변환합니다.

File: 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')

Step 5: Final JSON Output

결과 JSON 파일은 웹 대시보드나 기타 데이터 분석 도구에서 사용할 준비가 되었습니다.

File: 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

관련 글

더 보기 »