Logback을 사용하여 사용자 지정 영구 스토리지에 로그를 작성하는 방법
참고 항목
기본, 표준 및 엔터프라이즈 계획은 2025년 3월 중순부터 사용되지 않으며 3년의 은퇴 기간이 있습니다. Azure Container Apps로 전환하는 것이 좋습니다. 자세한 내용은 Azure Spring Apps 사용 중지 공지 사항을 참조하세요.
표준 소비 및 전용 계획은 2024년 9월 30일부터 사용되지 않으며 6개월 후에 완전히 종료됩니다. Azure Container Apps로 전환하는 것이 좋습니다. 자세한 내용은 Azure Spring Apps 표준 사용량 및 전용 계획을 Azure Container Apps로 마이그레이션을 참조 하세요.
이 문서는 Java ❎ C에✅ 적용됩니다.#
이 문서는 기본/표준 ✅ 엔터프라이즈에✅ 적용됩니다.
이 문서에서는 Azure Spring Apps에서 Logback을 로드하고 사용자 지정 영구 스토리지에 로그를 작성하는 방법을 보여 줍니다.
참고 항목
애플리케이션의 클래스 경로에 있는 파일에 다음 이름 중 하나가 있는 경우 Spring Boot는 Logback에 대한 기본 구성을 통해 자동으로 로드합니다.
- logback-spring.xml
- logback.xml
- logback-spring.groovy
- logback.groovy
필수 조건
- Azure Spring Apps 인스턴스에 바인딩된 기존 스토리지 리소스입니다. 스토리지 리소스를 바인딩해야 하는 경우 Azure Spring Apps에서 고유한 영구 스토리지를 사용하도록 설정하는 방법을 참조하세요.
- 애플리케이션에 포함된 Logback 종속성입니다. Logback에 대한 자세한 내용은 로그백 가이드를 참조하세요.
- Azure CLI용 Azure Spring Apps 확장
특정 경로에 로그를 쓰도록 Logback 구성 편집
logback-spring.xml 예제 파일을 사용하여 로그를 쓸 경로를 설정할 수 있습니다.
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="Console"
class="ch.qos.logback.core.ConsoleAppender">
<!-- please feel free to customize the log layout -->
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>
%black(%d{ISO8601}) %highlight(%-5level) [%blue(%t)] %yellow(%C{1.}): %msg%n%throwable
</Pattern>
</layout>
</appender>
<appender name="RollingFile"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 'LOGS' here is a value to be read from the application's environment variable -->
<file>${LOGS}/spring-boot-logger.log</file>
<!-- please feel free to customize the log layout pattern -->
<encoder
class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<Pattern>%d %p %C{1.} [%t] %m%n</Pattern>
</encoder>
<rollingPolicy
class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- rollover daily and when the file reaches 10 MegaBytes -->
<fileNamePattern>${LOGS}/archived/spring-boot-logger-%d{yyyy-MM-dd}.%i.log
</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>10MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
</appender>
<!-- LOG everything at the INFO level -->
<root level="info">
<appender-ref ref="RollingFile" />
<appender-ref ref="Console" />
</root>
<!-- LOG "com.baeldung*" at the TRACE level -->
<logger name="com.baeldung" level="trace" additivity="false">
<appender-ref ref="RollingFile" />
<appender-ref ref="Console" />
</logger>
</configuration>
앞의 예제에는 애플리케이션의 로그를 쓰기 위한 경로에 {LOGS}
라는 두 자리 표시자가 있습니다. 콘솔과 영구 스토리지 모두에 로그를 쓰려면 환경 변수 LOGS
에 값을 할당해야 합니다.
Azure CLI를 사용하여 영구 스토리지에서 Logback으로 새 앱 만들기 및 배포
다음 명령을 사용하여 영구 스토리지를 사용하도록 설정하고 환경 변수를 설정한 Azure Spring Apps에서 애플리케이션을 만듭니다.
az spring app create \ --resource-group <resource-group-name> \ --name <app-name> \ --service <spring-instance-name> \ --persistent-storage <path-to-json-file> \ --env LOGS=/byos/logs
참고 항목
LOGS
환경 변수의 값은mountPath
와 같거나 하위 디렉터리일 수 있습니다.create 명령의
--persistent-storage
매개 변수에 전달되는 JSON 파일의 예는 다음과 같습니다. 이 예제에서는 위의 CLI 명령과 아래mountPath
속성의 환경 변수에 대해 동일한 값이 전달됩니다.{ "customPersistentDisks": [ { "storageName": "<Storage-Resource-Name>", "customPersistentDiskProperties": { "type": "AzureFileVolume", "shareName": "<Azure-File-Share-Name>", "mountPath": "/byos/logs", "readOnly": false } } ] }
다음 명령을 사용하여 애플리케이션을 배포합니다.
az spring app deploy \ --resource-group <resource-group-name> \ --name <app-name> \ --service <spring-instance-name> \ --artifact-path <path-to-jar-file>
다음 명령을 사용하여 애플리케이션의 콘솔 로그를 확인합니다.
az spring app logs \ --resource-group <resource-group-name> \ --name <app-name> \ --service <spring-instance-name>
바인딩한 Azure Storage 계정 리소스로 이동하여 영구 스토리지로 연결된 Azure 파일 공유를 찾습니다. 이 예제에서는 로그가 Azure 파일 공유의 루트에 있는 spring-boot-logger.log 파일에 기록됩니다. 회전된 모든 로그 파일은 Azure 파일 공유의 /archived 폴더에 저장됩니다.
필요에 따라 다음 명령을 사용하여 기존 앱의 경로 또는 영구 스토리지를 업데이트합니다.
로그가 저장되는 경로 또는 영구 스토리지는 언제든지 변경할 수 있습니다. 환경 변수 또는 영구 스토리지를 변경하면 애플리케이션이 다시 시작됩니다.
az spring app update \ --resource-group <resource-group-name> \ --name <app-name> \ --service <spring-instance-name> \ --persistent-storage <path-to-new-json-file> \ --env LOGS=<new-path>