0Pricing
Java Academy · Ders

Logback Yapılandırma

Appender'lar, örüntüler ve düzeyler

Logback Yapılandırma, CoddyKit'te ücretsiz bir Java Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Java Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Java Academy kursu toplamda 4 dersten oluşur.

Logback Nedir?

Logback, Log4j'nin yazarı tarafından geliştirilen popüler bir SLF4J arka ucudur. SLF4J'nin açıkladığı günlükleme işlemlerini gerçekten gerçekleştirir.

Logback'i genellikle src/main/resources altında bulunan ve sınıf yolundaki logback.xml adlı bir dosyayla yapılandırırsınız.

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");
    }
}

Üç Yapı Taşı

Logback yapılandırmasının üç temel kavramı vardır:

  • Logger: Seviyesi olan, günlük olaylarının adlandırılmış kaynağı.
  • Ekleyici: Bir hedef (konsol, dosya).
  • Kodlayıcı/Düzen: Olayı metne biçimlendirir.
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");
    }
}

Konsol Ekleyici

En basit yapılandırma, her şeyi konsola gönderir. Kodlayıcının deseni satır biçimini denetler.

Bu XML, Java kodunuzda değil, logback.xml içinde bulunur.

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

Deseni Anlama

Desen dönüştürme sözcükleri % ile başlar:

  • %d zaman damgası, %level seviye.
  • %logger günlükçü adı, %thread iş parçacığı.
  • %msg iletiniz, %n yeni satır.

%-5level, seviyenin soluna, genişlik 5 olacak şekilde boşluk ekler.

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");
    }
}

Kök Günlükçü ve Seviyeler

<root> öğesi, uygulamanın tamamı için varsayılan seviyeyi ve yazacağı ekleyicileri belirler.

level="info" ayarı, INFO, WARN ve ERROR öğelerinin üretilmesi; DEBUG ve TRACE öğelerinin bastırılması anlamına gelir.

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

Paket Başına Seviyeler

Bir paket için seviyeyi geçersiz kılmak üzere <logger> öğesi ekleyin. Bu sayede kitaplıkları sessiz tutarken kendi kodunuz için DEBUG seviyesini etkinleştirebilirsiniz.

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

Döngüsel Dosya Ekleyici

Üretimde genellikle günlüklerin sınırsız büyümemesi için günlük veya boyut bazında devir yapılan dosyalara yazarsınız.

RollingFileAppender, zamana dayalı bir politikayla günde bir dosya oluşturur ve sınırlı bir geçmişi korur.

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

Aynı Anda Birden Çok Ekleyici

Kök günlükçü birden çok ekleyiciye başvurabilir; böylece günlükler aynı anda hem konsola hem de dosyaya gönderilir.

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

MDC'yi Yazdırma

İstek kimliği gibi MDC bağlamını her satıra eklemek için desene %X{key} ekleyin.

Ardından MDC'ye koyduğunuz her değer otomatik olarak görünür.

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();
    }
}

Eklenebilirlik

Varsayılan olarak bir günlükçünün olayları, üst günlükçülerinin ekleyicilerine de gönderilir. Buna eklenebilirlik denir.

Bir paket günlükçüsünün kendi ekleyicisi varsa ve yinelenen çıktı istemiyorsanız, üzerinde additivity="false" ayarını yapın.

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

Otomatik Yeniden Yükleme ve Değişkenler

Logback, <configuration scan="true"> ile yapılandırmayı düzenli aralıklarla yeniden yükleyebilir; bu, yeniden başlatmadan seviyeleri değiştirmek için kullanışlıdır.

Ayrıca günlük dizini gibi özellikleri ${LOG_DIR} yer tutucularıyla okuyabilirsiniz.

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

Hızlı Kontrol

Logback yapılandırması bilginizi sınayın.

Özet

Logback'i yapılandırmayı öğrendiniz:

  • Yapılandırma, günlükçüler, ekleyiciler ve kodlayıcılarla birlikte logback.xml içinde bulunur.
  • Desenler, satırları %d, %level, %msg ve %X{} ile biçimlendirir.
  • RollingFileAppender günlük dosyalarını döndürür; paket başına seviyeleri ve eklenebilirliği ayarlayın.
  • Canlı yeniden yapılandırma için scan öğesini etkinleştirin.

Günlükleme kursunu tamamladınız.

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");
    }
}

Sıkça Sorulan Sorular

“Logback Yapılandırma” dersi ücretsiz mi?

Evet — “Logback Yapılandırma” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Java Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Java Academy kursu toplamda 4 dersten oluşur.

“Logback Yapılandırma” dersinde ne öğreneceğim?

Appender'lar, örüntüler ve düzeyler Java Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Java Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Java Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.

“Logback Yapılandırma” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Java Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Java Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Yapılandırılmış Logging Neden Gerekli
  2. SLF4J Cephe Arayüzü ve Logger'lar
  3. Parametreli Logging
  4. Logback Yapılandırma
← Java Academy Sayfasına Dön