0Pricing
Java Academy · Pelajaran

Mengonfigurasi Logback

Appender, pola, dan tingkat.

Mengonfigurasi Logback adalah pelajaran Java Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Java Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Java Academy mencakup 4 pelajaran total.

Apa Itu Logback?

Logback adalah sistem pendukung SLF4J yang populer, ditulis oleh penulis yang sama dengan Log4j. Logback benar-benar melakukan pencatatan yang dijelaskan oleh pemanggilan SLF4J.

Anda mengonfigurasinya dengan berkas bernama logback.xml pada jalur kelas, biasanya di bawah src/main/resources.

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Main {
    private static final Logger log = LoggerFactory.getLogger(Main.class);
    public static void main(String[] args) {
        log.info("Logback reads logback.xml at startup");
    }
}

Tiga Komponen Dasar

Konfigurasi Logback memiliki tiga konsep inti:

  • Logger: sumber bernama untuk peristiwa pencatatan, dengan sebuah tingkat.
  • Penyalur: tujuan (konsol, berkas).
  • Penyandi/Tata Letak: memformat peristiwa menjadi teks.
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Main {
    private static final Logger log = LoggerFactory.getLogger(Main.class);
    public static void main(String[] args) {
        log.info("logger -> appender -> encoder -> output");
    }
}

Penyalur Konsol

Konfigurasi paling sederhana mengirim semuanya ke konsol. Pola penyandi mengendalikan format baris.

XML ini berada di logback.xml, bukan di kode Java Anda.

<configuration>
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>%d{HH:mm:ss.SSS} %-5level %logger{36} - %msg%n</pattern>
    </encoder>
  </appender>
  <root level="info">
    <appender-ref ref="STDOUT" />
  </root>
</configuration>

Memahami Pola

Kata konversi pola dimulai dengan %:

  • %d cap waktu, %level tingkat.
  • %logger nama logger, %thread utas.
  • %msg pesan Anda, %n baris baru.

%-5level menambahkan spasi di sebelah kiri tingkat hingga lebarnya 5.

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Main {
    private static final Logger log = LoggerFactory.getLogger(Main.class);
    public static void main(String[] args) {
        // Output rendered by pattern: time LEVEL logger - message
        log.info("hello");
    }
}

Logger Akar dan Tingkat

Elemen <root> menetapkan tingkat bawaan untuk seluruh aplikasi dan menentukan penyalur yang menjadi tujuan penulisannya.

Menetapkan level="info" berarti INFO, WARN, dan ERROR ditulis; DEBUG dan TRACE tidak ditulis.

<configuration>
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder><pattern>%-5level %logger - %msg%n</pattern></encoder>
  </appender>
  <root level="warn">
    <appender-ref ref="STDOUT" />
  </root>
</configuration>

Tingkat per Paket

Tambahkan elemen <logger> untuk mengganti tingkat bagi suatu paket. Dengan demikian, Anda dapat mengaktifkan DEBUG untuk kode Anda sendiri sambil membiarkan pustaka tetap tenang.

<configuration>
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder><pattern>%-5level %logger - %msg%n</pattern></encoder>
  </appender>
  <logger name="com.example.app" level="debug" />
  <root level="info">
    <appender-ref ref="STDOUT" />
  </root>
</configuration>

Penyalur Berkas Bergulir

Dalam produksi, biasanya Anda menulis ke berkas yang berganti setiap hari atau berdasarkan ukuran, sehingga catatan tidak bertambah tanpa batas.

RollingFileAppender dengan kebijakan berbasis waktu membuat satu berkas per hari dan menyimpan riwayat yang dibatasi.

<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
  <file>logs/app.log</file>
  <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    <fileNamePattern>logs/app.%d{yyyy-MM-dd}.log</fileNamePattern>
    <maxHistory>30</maxHistory>
  </rollingPolicy>
  <encoder>
    <pattern>%d %-5level [%thread] %logger{36} - %msg%n</pattern>
  </encoder>
</appender>

Beberapa Penyalur Sekaligus

Logger akar dapat merujuk ke beberapa penyalur, sehingga pencatatan dikirim ke konsol dan berkas secara bersamaan.

<configuration>
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder><pattern>%-5level %msg%n</pattern></encoder>
  </appender>
  <appender name="FILE" class="ch.qos.logback.core.FileAppender">
    <file>logs/app.log</file>
    <encoder><pattern>%d %-5level %msg%n</pattern></encoder>
  </appender>
  <root level="info">
    <appender-ref ref="STDOUT" />
    <appender-ref ref="FILE" />
  </root>
</configuration>

Mencetak MDC

Untuk menyertakan konteks MDC seperti ID permintaan di setiap baris, tambahkan %X{key} ke pola.

Kemudian, nilai apa pun yang Anda masukkan ke MDC akan muncul secara otomatis.

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.slf4j.MDC;

public class Main {
    private static final Logger log = LoggerFactory.getLogger(Main.class);
    public static void main(String[] args) {
        MDC.put("requestId", "req-1234");
        // Pattern: %X{requestId} %-5level %msg%n
        log.info("handled");
        MDC.clear();
    }
}

Aditivitas

Secara bawaan, peristiwa logger juga dikirim ke penyalur leluhurnya. Inilah aditivitas.

Jika logger paket memiliki penyalurnya sendiri dan Anda tidak menginginkan keluaran ganda, tetapkan additivity="false" padanya.

<configuration>
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder><pattern>%-5level %logger - %msg%n</pattern></encoder>
  </appender>
  <logger name="com.example.audit" level="info" additivity="false">
    <appender-ref ref="STDOUT" />
  </logger>
  <root level="warn">
    <appender-ref ref="STDOUT" />
  </root>
</configuration>

Muat Ulang Otomatis dan Variabel

Logback dapat memuat ulang konfigurasi secara berkala dengan <configuration scan="true">, yang berguna untuk mengubah tingkat tanpa memulai ulang.

Anda juga dapat membaca properti, seperti direktori catatan, dengan penanda tempat ${LOG_DIR}.

<configuration scan="true" scanPeriod="30 seconds">
  <property name="LOG_DIR" value="logs" />
  <appender name="FILE" class="ch.qos.logback.core.FileAppender">
    <file>${LOG_DIR}/app.log</file>
    <encoder><pattern>%d %-5level %msg%n</pattern></encoder>
  </appender>
  <root level="info"><appender-ref ref="FILE" /></root>
</configuration>

Pemeriksaan Singkat

Uji pengetahuan Anda tentang konfigurasi Logback.

Ringkasan

Anda telah mempelajari cara mengonfigurasi Logback:

  • Konfigurasi berada dalam logback.xml bersama logger, penyalur, dan penyandi.
  • Pola memformat baris dengan %d, %level, %msg, %X{}.
  • RollingFileAppender merotasi catatan; tetapkan tingkat per paket dan aditivitas.
  • Aktifkan scan untuk konfigurasi ulang langsung.

Anda telah menyelesaikan kursus pencatatan.

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Main {
    private static final Logger log = LoggerFactory.getLogger(Main.class);
    public static void main(String[] args) {
        log.info("Logback configuration course complete");
    }
}

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Mengonfigurasi Logback” gratis?

Ya — teks lengkap “Mengonfigurasi Logback” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Java Academy, upgrade ke CoddyKit PRO. Kursus Java Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Mengonfigurasi Logback”?

Appender, pola, dan tingkat. Kamu berlatih Java Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Java Academy?

Tidak diperlukan pengalaman sebelumnya. Java Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.

Berapa lama pelajaran “Mengonfigurasi Logback” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Java Academy ini?

Ya. Setiap pelajaran Java Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Mengapa Logging Terstruktur
  2. Facade SLF4J dan Logger
  3. Logging Berparameter
  4. Mengonfigurasi Logback
← Kembali ke Java Academy