Bagikan melalui


Cara menggunakan Logback untuk menulis log ke penyimpanan persisten kustom

Catatan

Paket Basic, Standard, dan Enterprise tidak digunakan lagi mulai pertengahan Maret 2025, dengan periode penghentian 3 tahun. Sebaiknya transisi ke Azure Container Apps. Untuk informasi selengkapnya, lihat pengumuman penghentian Azure Spring Apps.

Konsumsi Standar dan paket khusus akan ditolak mulai 30 September 2024, dengan pematian lengkap setelah enam bulan. Sebaiknya transisi ke Azure Container Apps. Untuk informasi selengkapnya, lihat Memigrasikan konsumsi Azure Spring Apps Standard dan paket khusus ke Azure Container Apps.

Artikel ini berlaku untuk: ✔️ Java ❌ C#

Artikel ini berlaku untuk: ✔️ Basic/Standard ✔️ Enterprise

Artikel ini menunjukkan cara memuat Logback dan menulis log ke penyimpanan persisten kustom di Azure Spring Apps.

Catatan

Ketika file di classpath aplikasi memiliki salah satu nama berikut, Spring Boot akan secara otomatis memuatnya melalui konfigurasi default untuk Logback:

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

Prasyarat

Mengedit konfigurasi Logback untuk menulis log ke jalur tertentu

Anda dapat mengatur jalur ke tempat log akan ditulis dengan menggunakan file contoh 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>

Dalam contoh sebelumnya, ada dua placeholder yang bernama {LOGS} di jalur untuk menulis log aplikasi. Nilai harus ditetapkan ke variabel lingkungan LOGS agar log dapat ditulis ke konsol dan penyimpanan persisten Anda.

Menggunakan Azure CLI untuk membuat dan menyebarkan aplikasi baru dengan Logback pada penyimpanan persisten

  1. Gunakan perintah berikut untuk membuat aplikasi di Azure Spring Apps dengan penyimpanan persisten yang diaktifkan dan variabel lingkungan yang ditetapkan:

    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
    

    Catatan

    Nilai variabel lingkungan LOGS dapat sama seperti, atau subdirektori dari mountPath.

    Berikut adalah contoh file JSON yang diteruskan ke parameter --persistent-storage pada perintah buat. Dalam contoh ini, nilai yang sama diteruskan untuk variabel lingkungan dalam perintah CLI di atas dan di properti mountPath di bawah:

    {
        "customPersistentDisks": [
            {
                "storageName": "<Storage-Resource-Name>",
                "customPersistentDiskProperties": {
                    "type": "AzureFileVolume",
                    "shareName": "<Azure-File-Share-Name>",
                    "mountPath": "/byos/logs",
                    "readOnly": false
                }
            }
        ]
    }
    
  2. Gunakan perintah berikut untuk menerapkan aplikasi Anda:

    az spring app deploy \
         --resource-group <resource-group-name> \
         --name <app-name> \
         --service <spring-instance-name> \
         --artifact-path <path-to-jar-file>
    
  3. Gunakan perintah berikut untuk memeriksa log konsol aplikasi Anda:

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

    Buka sumber daya Akun Azure Storage yang Anda ikat dan temukan file share Azure yang dilampirkan sebagai penyimpanan persisten. Dalam contoh ini, log akan ditulis ke file spring-boot-logger.log di akar file share Azure Anda. Semua file log yang diputar akan disimpan dalam folder /archived di file share Azure Anda.

  4. Secara opsional, gunakan perintah berikut untuk memperbarui jalur atau penyimpanan persisten aplikasi yang ada:

    Jalur atau penyimpanan persisten tempat log disimpan dapat diubah kapan saja. Aplikasi akan dimulai ulang ketika perubahan dilakukan pada variabel lingkungan atau penyimpanan persisten.

    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>
    

Langkah berikutnya