Aracılığıyla paylaş


Günlükleri özel kalıcı depolama alanına yazmak için Logback'i kullanma

Not

Azure Spring Apps, Azure Spring Cloud hizmetinin yeni adıdır. Hizmetin yeni bir adı olsa da, ekran görüntüleri, videolar ve diyagramlar gibi varlıkları güncelleştirmek için çalışırken bazı yerlerde eski adı bir süre görürsünüz.

Bu makale şunlar için geçerlidir: ✔️ Java ❌ C#

Bu makale şunlar için geçerlidir: ✔️ Temel/Standart ✔️ Kurumsal

Bu makalede, Azure Spring Apps'te Logback'i yükleme ve günlükleri özel kalıcı depolama alanına yazma adımları gösterilmektedir.

Not

Uygulamanın sınıf yolundaki bir dosya aşağıdaki adlardan birine sahip olduğunda, Spring Boot bunu otomatik olarak Logback için varsayılan yapılandırmanın üzerine yükler:

  • logback-spring.xml
  • logback.xml
  • logback-spring.groovy
  • logback.groovy

Önkoşullar

Günlükleri belirli bir yola yazmak için Logback yapılandırmasını düzenleyin

logback-spring.xml örnek dosyasını kullanarak günlüklerin yazılacağı yolu ayarlayabilirsiniz.

<?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>

Yukarıdaki örnekte, uygulamanın günlüklerini yazmaya yönelik yolda adlı {LOGS} iki yer tutucu vardır. Günlüğün hem konsola hem de kalıcı depolamanıza yazılması için ortam değişkenine LOGS bir değer atanması gerekir.

Kalıcı depolamada Logback ile yeni bir uygulama oluşturmak ve dağıtmak için Azure CLI'yi kullanma

  1. Azure Spring Apps'te kalıcı depolama etkinleştirilmiş ve ortam değişken kümesine sahip bir uygulama oluşturmak için aşağıdaki komutu kullanın:

    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
    

    Not

    Ortam değişkeninin LOGS değeri ile aynı veya alt dizini mountPatholabilir.

    Aşağıda create komutundaki parametresine --persistent-storage geçirilen JSON dosyasının bir örneği verilmiştir. Bu örnekte, yukarıdaki CLI komutunda ve aşağıdaki özellikte mountPath ortam değişkeni için aynı değer geçirilir:

    {
        "customPersistentDisks": [
            {
                "storageName": "<Storage-Resource-Name>",
                "customPersistentDiskProperties": {
                    "type": "AzureFileVolume",
                    "shareName": "<Azure-File-Share-Name>",
                    "mountPath": "/byos/logs",
                    "readOnly": false
                }
            }
        ]
    }
    
  2. Uygulamanızı dağıtmak için aşağıdaki komutu kullanın:

    az spring app deploy \
         --resource-group <resource-group-name> \
         --name <app-name> \
         --service <spring-instance-name> \
         --artifact-path <path-to-jar-file>
    
  3. Uygulamanızın konsol günlüğünü denetlemek için aşağıdaki komutu kullanın:

    az spring app logs \
         --resource-group <resource-group-name> \
         --name <app-name> \
         --service <spring-instance-name>
    

    Bağladığınız Azure Depolama Hesabı kaynağına gidin ve kalıcı depolama olarak eklenen Azure dosya paylaşımını bulun. Bu örnekte günlükler Azure dosya paylaşımınızın kökündeki spring-boot-logger.log dosyasına yazılır. Döndürülen günlük dosyalarının tümü Azure dosya paylaşımınızdaki /archived klasöründe depolanır.

  4. İsteğe bağlı olarak, mevcut bir uygulamanın yolunu veya kalıcı depolama alanını güncelleştirmek için aşağıdaki komutu kullanın:

    Günlüklerin kaydedildiği yol veya kalıcı depolama alanı istediğiniz zaman değiştirilebilir. Ortam değişkenlerinde veya kalıcı depolamada değişiklikler yapıldığında uygulama yeniden başlatılır.

    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>
    

Sonraki adımlar