리눅스 튜토리얼: 로그를 CSV에서 JSON으로
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 스크립트는 csv와 json 모듈을 사용해 평면 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"
}
]