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 %:
%dcap waktu,%leveltingkat.%loggernama logger,%threadutas.%msgpesan Anda,%nbaris 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.xmlbersama logger, penyalur, dan penyandi. - Pola memformat baris dengan
%d,%level,%msg,%X{}. - RollingFileAppender merotasi catatan; tetapkan tingkat per paket dan aditivitas.
- Aktifkan
scanuntuk 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
- Mengapa Logging Terstruktur
- Facade SLF4J dan Logger
- Logging Berparameter
- Mengonfigurasi Logback