동적 로거 수준을 설정하여 Azure Container Apps의 Java 애플리케이션 문제 해결(미리 보기)
Azure Container Apps 플랫폼은 Java 개발자 전용 기본 제공 진단 도구를 제공하여 Azure Container Apps에서 실행되는 Java 애플리케이션을 더 쉽고 효율적으로 디버그하고 문제를 해결하도록 도와줍니다. 주요 기능 중 하나는 동적 로거 수준 변경을 통해 기본적으로 숨겨진 로그 세부 정보에 대한 액세스를 허용하는 것입니다. 이 기능을 사용하면 로그 수준을 변경할 때 앱을 강제로 다시 시작하거나 코드를 수정할 필요 없이 로그 정보를 수집할 수 있습니다.
시작 전에 Azure CLI에서 Azure Container Apps 확장을 버전 0.3.51 이상으로 업그레이드해야 합니다.
az extension update --name containerapp
Java 애플리케이션에 JVM 진단 사용
Java 진단 도구를 사용하기 전에 먼저 Azure Container Apps에 JVM(Java Virtual Machine) 진단을 사용하도록 설정해야 합니다. 이 단계에서는 고급 진단 에이전트를 앱에 삽입하여 Java 진단 기능을 사용하도록 설정합니다. 이 프로세스에서 앱을 다시 시작할 수도 있습니다.
이러한 진단 도구를 활용하려면 진단 도구가 활성화된 새 컨테이너 앱을 만들거나 기존 컨테이너 앱을 업데이트할 수도 있습니다.
JVM 진단이 활성화된 새 컨테이너 앱을 만들려면 다음 명령을 사용합니다.
az containerapp create --enable-java-agent \
--environment <ENVIRONMENT_NAME> \
--resource-group <RESOURCE_GROUP> \
--name <CONTAINER_APP_NAME>
기존 컨테이너 앱을 업데이트하려면 다음 명령을 사용합니다.
az containerapp update --enable-java-agent \
--resource-group <RESOURCE_GROUP> \
--name <CONTAINER_APP_NAME>
런타임 로거 수준 변경
JVM 진단을 사용하도록 설정한 후에는 애플리케이션을 다시 시작할 필요 없이 실행 중인 Java 앱의 특정 로거에 대한 런타임 로그 수준을 변경할 수 있습니다.
다음 샘플에서는 로그 수준이 info
인 로거 이름 org.springframework.boot
을(를) 사용합니다. 이러한 값을 사용자 고유의 로거 이름 및 수준과 일치하도록 변경해야 합니다.
다음 명령을 사용하여 특정 로거에 대한 로그 수준을 조정합니다.
az containerapp java logger set \
--logger-name "org.springframework.boot" \
--logger-level "info"
--resource-group <RESOURCE_GROUP> \
--name <CONTAINER_APP_NAME>
로거 수준 변경이 적용되는 데 최대 2분이 걸릴 수 있습니다. 완료되면 로그 스트림 또는 다른 로그 옵션의 애플리케이션 로그를 확인할 수 있습니다.
지원되는 Java 로깅 프레임워크
지원되는 Java 로깅 프레임워크는 다음과 같습니다.
- Log4j2 (버전 2만 해당*)
- Logback
- jboss-logging
다양한 로깅 프레임워크별로 지원되는 로그 수준
다양한 로깅 프레임워크는 서로 다른 로그 수준을 지원합니다. JVM 진단 플랫폼에서 일부 프레임워크는 다른 프레임워크보다 더 잘 지원됩니다. 로깅 수준을 변경하기 전에 프레임워크 및 플랫폼이 사용 중인 로그 수준을 지원하는지 확인합니다.
프레임워크 | OFF | FATAL | 오류 | WARN | INFO | DEBUG | TRACE |
---|---|---|---|---|---|---|---|
Log4j2 | 예 | 예 | 예 | 예 | 예 | 예 | 예 |
Logback | 예 | 아니요 | 예 | 예 | 예 | 예 | 예 |
jboss-logging | 예 | 예 | 예 | 예 | 예 | 예 | 예 |
플랫폼 | 예 | 아니요 | 예 | 예 | 예 | 예 | 예 |
일반적인 로그 수준 표시 유형
로그 수준 | FATAL | 오류 | WARN | INFO | DEBUG | TRACE |
---|---|---|---|---|---|---|
OFF | ||||||
FATAL | 예 | |||||
ERROR | 예 | 예 | ||||
WARN | 예 | 예 | 예 | |||
INFO | 예 | 예 | 예 | 예 | ||
DEBUG | 예 | 예 | 예 | 예 | 예 | |
TRACE | 예 | 예 | 예 | 예 | 예 | 예 |
예를 들어 로그 수준을 INFO
설정하는 경우 앱은 수준 , ERROR
, INFO
WARN
및 수준을 FATAL
사용하여 로그를 인쇄하지 않고 수준 DEBUG
및 TRACE
로그를 인쇄하지 않습니다.