스프링 부트 Actuator Logback 충돌 해결과 로그 레벨 변경

💡 핵심 요약 (Executive Summary)

본 가이드는 fw springboot feature actuator logback 충돌 해결 핵심 가이드 및 실전 아키텍처의 핵심 개념, 실전 구성 명령어 및 아키텍처 베스트 프랙티스를 다룹니다. 클라우드 네이티브 및 인프라 엔지니어링 실무에 즉시 활용 가능하도록 체계적으로 정리했습니다.

📑 Table of Contents

이 설정을 보면 Actuator를 통한 로그 레벨 변경이 일부 패키지에서 불가능할 가능성이 높음.

원인을 분석하고 해결 방법을 제안해 줄게. 🚀


🔎 문제 분석
✅ 1️⃣ root 로그 레벨이 WARN으로 고정됨
xml
xml
복사편집
<root level="warn">
  • root 로그 레벨이 WARN으로 설정되어 있음.
  • Actuator에서 root 로그 레벨을 변경해도 WARN 이상만 출력될 가능성이 있음.
  • root가 WARN이기 때문에, 특정 패키지가 DEBUG로 설정되어도 적용되지 않을 수도 있음.

🔹 확인 방법

  • /actuator/loggers/root 엔드포인트로 현재 root 로그 레벨 확인
txt
sh
복사편집
curl -X GET http://localhost:8080/actuator/loggers/root
  • 응답 예시
json
json
복사편집
{
  "configuredLevel": "WARN",
  "effectiveLevel": "WARN"
}
  • configuredLevel을 변경해도 effectiveLevel이 유지된다면 root 설정이 우선 적용된 것임.

✅ 2️⃣ 특정 패키지(예: iaas, org.springframework)는 logback에서 level을 강제 지정함
xml
xml
복사편집
<logger name="iaas" level="debug" additivity="false">
xml
xml
복사편집
<logger name="org.springframework" level="debug" additivity="false">
  • logback.xml에서 특정 패키지의 로그 레벨을 하드코딩하면 Actuator에서 변경이 불가능함.
  • Actuator는 동적으로 설정을 변경하지만, logback에서 level="debug"처럼 명시하면 override가 불가함.

🔹 확인 방법

  • /actuator/loggers/iaas 엔드포인트로 현재 설정 확인
txt
sh
복사편집
curl -X GET http://localhost:8080/actuator/loggers/iaas
  • 응답 예시
json
json
복사편집
{
  "configuredLevel": "null",
  "effectiveLevel": "DEBUG"
}
  • configuredLevel이 null이면 Actuator에서 변경이 불가능함.
  • level="debug"로 강제 설정되어 있어서 Actuator 변경이 적용되지 않는 상태.

🚀 해결 방법 (Actuator에서 로그 레벨 변경 가능하게 만들기)
✅ 1️⃣ root 로그 레벨을 낮추고, 특정 패키지를 Actuator로 변경 가능하도록 조정

현재 root가 WARN으로 설정되어 있어서 Actuator에서 변경이 반영되지 않을 가능성이 있음.

xml
xml
복사편집
<root level="DEBUG">

이렇게 변경하면, Actuator에서 변경한 설정이 적용될 가능성이 높아짐.


✅ 2️⃣ 특정 패키지의 level 속성을 제거하여 Actuator에서 변경 가능하도록 함

현재 아래처럼 특정 패키지의 로그 레벨이 하드코딩되어 있어서 Actuator에서 변경할 수 없음.

xml
xml
복사편집
<logger name="iaas" level="debug" additivity="false">
xml
xml
복사편집
<logger name="org.springframework" level="debug" additivity="false">

➡ 이렇게 변경하면 Actuator에서 동적으로 변경 가능해짐.

xml
xml
복사편집
<logger name="iaas" additivity="false">
    <appender-ref ref="consoleAppender"/>
    <appender-ref ref="dailyRollingFileAppender"/>
    <appender-ref ref="overwriteFileAppender"/>
</logger>

<logger name="org.springframework" additivity="false">
    <appender-ref ref="consoleAppender"/>
    <appender-ref ref="dailyRollingFileAppender"/>
    <appender-ref ref="overwriteFileAppender"/>
</logger>

🚀 이렇게 수정하면 Actuator에서 동적으로 로그 레벨을 변경할 수 있음.


✅ 3️⃣ Actuator 로그 변경 기능 활성화 (write: true 확인)

application.yml에서 Actuator의 loggers 엔드포인트가 쓰기 가능(write enabled) 상태인지 확인해야 함.

yaml
yaml
복사편집
management:
  endpoints:
    web:
      exposure:
        include: loggers
  endpoint:
    loggers:
      enabled: true
      write: true  # ✅ 로그 레벨 변경 가능하도록 설정
  • write: true 설정이 없으면 Actuator에서 로그 레벨 변경이 안 됨.
  • 운영 환경에서도 해당 설정이 적용되어 있는지 확인 필요.

🚀 최종 정리 (수정해야 할 것들)

✔ root의 로그 레벨을 낮춰서 로그 변경이 가능하도록 함

✔ logback-spring.xml에서 특정 패키지의 level="debug" 설정을 제거하여 Actuator에서 변경 가능하게 함

✔ application.yml에서 Actuator의 write: true 설정을 확인함


이렇게 수정하면 Actuator에서 로그 변경이 가능할 거야! 🚀

테스트하고 안 되는 부분 있으면 추가로 확인해볼 수 있어. 💪

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *