ELK로 Spring 애플리케이션의 로그 남기기

목표 Spring 애플리케이션의 로그를 남기기 위해 ELK를 구축한다. Spring MVC의 액세스 로그도 ELK에 남기도록 구현한다. ELK란? Elasticsearch, Logstash, Kibana의 약자 Elasticsearch: 검색 및 분석 엔진용 분산 시스템 Logstash: 여러 source로부터 데이터를 수집하고 가공하는 데이터 처리 파이프라인 Kibana: Elasticsearch 데이터 시각화 도구 ELK 작동 방식 Logstash가 다양한 서버, 애플리케이션, 시스템 등에서 생성되는 로그나 데이터를 수집한다. Logstash가 수집된 원본 데이터를 파싱하고, 필드를 추가하거나 불필요한 부분을 제거하여 분석에 용이한 형태로 가공한다. 가공된 데이터는 Elasticsearch에 인덱싱되어 저장된다....

2025-08-19 · 3 min · 443 words

Spring에서 로깅 시 각 요청마다 식별자 만들기

배경 로그 모니터링할 때 각 로그가 서로 연관이 있는지, 한 요청에 대해서 어떤 순서로 로그가 남았는지 확인이 필요한 상황이 있었다. 로그를 남길 때 요청마다 고유한 식별자를 만들어서 로그에 같이 남도록 구현한다. 현재 프로젝트는 Logback을 사용해 로그를 남기고 있다. MDC MDC는 log4j나 logback이 로그를 남길 때 Appedner가 접근할 수 있는 데이터로 Map과 같은 구조로 작성할 수 있다. MDC의 고주논 ThreadLocal을 사용하여 실행 중인 스레드에 내부적으로 연결된다. 아래 사진과 같이 MDC 클래스 내에는 MDCAdapter 라는 인터페이스의 static 필드를 가지고 있다....

2025-02-20 · 1 min · 184 words

Logging

System.out.println("*********제발 나와라*********"); 위 코드 한 줄은 아마 개발을 해본 대부분은 시도 해본 디버깅 방법일 것이다. 필자도 한 때 많이 이용한 방법이다. 특별한 기술이 없어도 내가 작성한 코드가 어떻게 흘러가는지, 어디까지 동작하는지 확인할 수 있다. 점차 IDE 사용법에 익숙해지면 알게 되는 좀 더 쉬운 디버깅 방법으로는 디버거가 있다. 디버거를 사용하면 특정 코드 라인에 도달했을 때, 각 변수의 주소, 값 등을 확인할 수 있어 디버깅할 때 용이하다. 하지만 이런 방법들은 한계가 있다....

2025-02-01 · 5 min · 917 words