Bu bölümde Spring Boot üzerinde SLF4J (Simple Logging Facade for Java) kullanarak, loglama yapısının eklenmesi ve basit konfigürasyonları üzerinde duracağız.
A clever person solves a problem. A wise person avoids it…
A. Einstein
Loglama
Spring Boot, herhangi bir konfigürasyon ve ek kütüphane ihtiyacı olmadan SLF4J ile uygulama içerisinde 7 seviyeli (TRACE, DEBUG, INFO, WARN, ERROR, FATAL ve OFF) bir loglama altyapısı sağlar. SLF4J pek çok loglama framework’ü için (java.util.logging, logback, log4j gibi) bir arayüz sağlar. Uygulamamızı çalıştırdığımızda, çalışma esnasında INFO (esasında hiyerarşik olarak daha üst seviye loglar da yazdırılır) seviyesinde logların konsola yazıldığını görebilirsiniz, kodumuz içerisinde temelde loglama yapısının şu şekilde eklenir;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class MybackendApplication {
private static final Logger logger = LoggerFactory.getLogger(MybackendApplication.class);
public static void main(String[] args) {
SpringApplication.run(MybackendApplication.class, args);
logger.info("Hello World...");
}
}
Uygulamamızı çalıştırdığımızda eklediğimiz log’un aşağıdaki resimdeki gibi konsolumuza yazdırıldığını göreceğiz.

Loglama problem çözümü için hayati öneme sahiptir, hataların, istisnai durumlarım veya uyarıların farklı seviyelerde loglanması gerekir. Daha önce bahsettiğim şekilde 7 farklı seviyede loglama yapılabilir ve sunucu log dosyalarına hangi seviyede loglama yapılacağı konfigüre edilebilir. Bu işlem için resources altındaki application.properties dosyasını kullanabiliriz. logging.level.root=INFO şeklinde bir tanım yaptığımızda INFO seviyesi ve üst seviyedeki logların (INFO, WARN, ERROR, and FATAL) yazdırıldığını görebiliriz.
Diğer temel konfigürasyonlar
application.properties üzerinden temel tanımların ve default değerlerin değiştirilebildiğineden bahsetmiştik, yazı dizisinin ilerleyen bölümlerinde datasource tanımları, JPA konfigürasyonu, REST api path tanımları gibi özellikleri ihtiyacımız oldukça burada tanımlayacağız.
