[java] 자바 스프링 부트 로그 수집 방법

스프링 부트 애플리케이션에서 로그를 수집하고 관리하는 것은 중요한 작업입니다. 로그를 적절히 수집하고 분석하면 애플리케이션의 동작 및 성능을 모니터링 할 수 있으며, 장애 발생 시 빠르게 대응할 수 있습니다.

스프링 부트에서 로그 설정

스프링 부트는 기본적으로 로깅을 위해 Logback을 사용합니다. application.properties 파일에서 로깅 설정을 구성할 수 있습니다.

# 로그 레벨 설정
logging.level.root=INFO
logging.level.org.springframework=DEBUG
logging.level.com.example=DEBUG

# 로그 파일에 출력
logging.file=myapp.log
logging.pattern.file=%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n

Elastic Stack을 이용한 로그 수집

Elasticsearch, Logstash, Kibana를 통합하는 Elastic Stack은 로그 수집, 처리 및 시각화를 위한 강력한 도구입니다.

Logstash 설정

Logstash를 사용하여 스프링 부트 애플리케이션의 로그를 수집하고 Elasticsearch에 전송하는 설정은 다음과 같습니다.

input {
  file {
    path => "/path/to/your/log/file.log"
    start_position => "beginning"
  }
}

filter {
  grok {
    match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:loglevel} \[%{DATA:thread}\] %{JAVACLASS:classname} - %{GREEDYDATA:logmessage}" }
  }
}

output {
  elasticsearch {
    hosts => ["localhost:9200"]
    index => "your-index-name"
  }
}

Kibana 시각화

Kibana를 사용하면 Elasticsearch에 저장된 로그 데이터를 시각적으로 표현하고 대시보드를 생성할 수 있습니다.

결론

스프링 부트 애플리케이션에서 로그를 효과적으로 수집하고 관리하는 것은 운영 및 모니터링에 매우 중요합니다. Elastic Stack을 사용하여 로그를 수집하고 분석하면 애플리케이션 상태를 실시간으로 파악할 수 있어 장애 대응 및 성능 향상에 도움이 됩니다.