이번에는 로그 파일을 정규식으로 파싱 → DB 저장 → 통계 API 제공까지 한 번에 구현했습니다.
Spring Boot 3.3.x + Spring Batch 5.x + JPA + MariaDB 기반으로 진행했으며, 실제 로그를 통계/모니터링할 수 있도록 확장할 수 있습니다.
정규식 기반 로그 파싱
FlatFileItemReader + 커스텀 LogLineMapper2025-08-25 19:42:11.123 INFO [...] ... 형태 로그를 엔티티로 변환Batch Job 구성
Reader → Processor → Writer → DB 저장
@StepScope + JobParameters 활용해 파일 경로/앱명/호스트명 동적 주입
수동 실행:
POST /batch/trigger?file=C:/logs/app.log&app=core&host=devpc
DB 저장
LogEntry 엔티티 설계통계 API
/api/stats/levels/api/stats/daily/api/stats/top-errors날짜 파라미터 유연성
2025-08-25 또는 2025-08-25T00:00:00 둘 다 허용되도록 공용 파서 적용
2025-08-25 19:42:11.123 INFO [main] c.d.l.SampleService - Start processing
2025-08-25 19:42:12.987 WARN [worker-1] c.d.l.Parser - Slow response code=R001 msg=Too slow
2025-08-25 19:42:15.555 ERROR [worker-2] c.d.l.Parser - Parsing failed code=E400 msg=Bad token
POST http://localhost:8080/batch/trigger?file=C:/logs/app.log&app=core&host=devpc
GET /api/stats/levels?from=2025-08-25&to=2025-08-26
응답: { "INFO": 1, "WARN": 1, "ERROR": 1 }
Spring Batch 5.x에서는 JobBuilderFactory, StepBuilderFactory가 사라졌고,
JobRepository/StepBuilder/@StepScope 기반으로 작성해야 하는 점이 인상적이었습니다.
실무에서 로그 모니터링/통계를 직접 만들어보니 확장성이 큰 패턴이라,
앞으로 다른 배치성 처리에도 적용할 수 있을 것 같습니다.