# 관련 소스는 여기에서 확인하실 수 있습니다.
프로젝트를 진행하며 열심히 개발을 하던 나에게 요구사항에 맞추어 로그를 기록하고 파일로 남기라는 특명이 떨어졌다.
요구사항
- 필수 입력 사항을 기록해라
- 로그의 고유 ID
- 로그 기록 시작/종료 시간
- 응답 코드 (성공, 실패 여부와 간략한 원인을 알 수 있는 코드)
- 5분마다 지정한 경로에 파일로 남겨라
- 파일의 이름은 년-월-일-시-분.log
ex) 2023-06-02-11-15.log
- 파일은 5분 단위의 시간에 맞춰서 파일로 만들어라
ex) 애플리케이션이 11시 2분에 실행되어 로그가 11시 2분부터 기록되었다면, 로그 파일 생성은 11시 5분에 생성되어 11시 2분 ~ 11시 4분 59초까지 기록된 로그를 파일로 만들어야 한다.
- 로그 이벤트가 발생하지 않아도 빈 로그 파일이 생성되어야 한다.
ex) 예를 들어 사용자가 없는 새벽 시간에는 사용자가 없으니 로그 이벤트가 발생하지 않지만, 그럼에도 불구하고 5분 단위로 빈 로그 파일이 생성되어야 한다.
- 로그 파일의 이름은 해당 파일이 만들어지는 시점으로 한다.
ex) 11시 5분 ~ 11시 10분 사이의 로그를 기록한 파일이라면 파일 이름은 년-월-일-시-5.log가 아니라 년-월-일-시-10.log가 되어야 한다.
대략 이러한 조건을 갖춘 요구사항이었고, 프로젝트에서 logback을 이용해서 로그를 남기고 있었기 때문에 대충 logback 설정 파일에 설정해 주면 되겠지라는 생각을 가지고 시작을 했으나... 그것은 logback에 대해서 잘 모르고 있었기 때문에 품었던 안일한 생각이었음을 곧 깨닫게 된다.
첫 시작은 아주 순조로웠다. 그동안 갈고닦은 구글링을 실력으로 순식간에 logback 설정을 마치고 테스트하니 5분마다 로그파일도 생성되고 아주아주 잘 동작했다...고 생각했으나 logback을 설정만으로는 요구사항을 다 충족시킬 수 없다는 문제를 발견했다.
문제점
- 로그 파일이 5분마다 생성이 되지만 5분 단위로 생성되지는 않는다.
애플리케이션이 11시 2분에 시작되었다고 가정하면 로그 파일은 7분, 12분, 17분 이렇게 5분마다 생성이 되어버린다.
- 사용자가 없으면 로그 이벤트가 발생하지 않아 로그 파일이 생성되지 않는다.
logback은 기본적으로 로그 이벤트가 발생하지 않으면 로그 파일을 남기지 않는다.
- 로그 파일의 이름이 파일 생성 시점의 분 단위가 아닌 처음 기록되는 시점의 분 단위로 생성된다.
11시 2분에 로그 기록이 시작되었고 11시 7분에 5분간의 로그 기록을 파일로 저장한다고 했을 때, 원하는 것은 11시 7분이라는 파일 이름이지만, 실제로는 11시 2분이라는 파일로 이름이 생성되었다.
이런 문제점들이 발견되고 해결하기위한 여정이 시작되는데... (다음 편에서 계속)