백엔드
Kotlin 환경에서 로그를 기록할 때 불필요한 문자열 연산을 방지하는 방법
두줄요약
Kotlin과 Java에서 SLF4J 로깅 시 불필요한 문자열 연산을 줄이는 방법을 다뤘습니다. 성능과 가독성을 비교해 Parameterized Logging과 kotlin-logging의 선택 기준을 제시했습니다.
핵심 내용
- SLF4J 로깅에서 문자열 템플릿이나 문자열 결합이 DEBUG 비활성화 상황에서도 문자열 연산을 유발하는 문제
- Java에서는 Parameterized Logging이 불필요한 연산을 줄이는 대안
- Kotlin에서는 kotlin-logging의 람다 기반 로그와 String Template 조합으로 가독성과 연산 방지의 균형을 시도
- 성능 측정 결과, 비활성화 상태에서는 Parameterized Logging이 가장 빠르고 kotlin-logging은 가독성 측면에서 장점
적용해볼 점
- 로그 레벨 비활성화 시 평가되지 않는 방식 우선 고려
- 성능 우선이면 Parameterized Logging 선택
- 가독성 우선이면 kotlin-logging 검토
