다음을 통해 공유


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

필수 조건

특정 경로에 로그를 쓰도록 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으로 새 앱 만들기 및 배포

  1. 다음 명령을 사용하여 영구 스토리지를 사용하도록 설정하고 환경 변수를 설정한 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
                }
            }
        ]
    }
    
  2. 다음 명령을 사용하여 애플리케이션을 배포합니다.

    az spring app deploy \
         --resource-group <resource-group-name> \
         --name <app-name> \
         --service <spring-instance-name> \
         --artifact-path <path-to-jar-file>
    
  3. 다음 명령을 사용하여 애플리케이션의 콘솔 로그를 확인합니다.

    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 폴더에 저장됩니다.

  4. 필요에 따라 다음 명령을 사용하여 기존 앱의 경로 또는 영구 스토리지를 업데이트합니다.

    로그가 저장되는 경로 또는 영구 스토리지는 언제든지 변경할 수 있습니다. 환경 변수 또는 영구 스토리지를 변경하면 애플리케이션이 다시 시작됩니다.

    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>
    

다음 단계