Spring Boot

Spring Boot Dersleri Spring Logging Uygulama Örneği

Spring Boot Derleri‘ne devam ediyoruz. Önceki derslerde Spring Boot Projelerinde Logging Level işlemlerinden bahsetmiştim. (bakınız)

Bu yazıda ise Spring Boot projemizde Loglama işlemi nasıl eklenir log seviyelerine göre nasıl loglama yapılır onlara bakacağız.

Yapacağız proje öğrenci bilgilerini alan gönderen bir endpoint yapacağız ve bu işlemler yapılırken loglama

maven bağımlılığımız aşağıdaki gibi olacaktır.

<dependencies>
  <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-web</artifactId>
   </dependency>
<dependencies>

Modelimiz oluşturalım

public class Ogrenci {
    private int id;
    private String adi;

    public Ogrenci(int id, String adi) {
        this.id = id;
        this.adi = adi;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getAdi() {
        return adi;
    }

    public void setAdi(String adi) {
        this.adi = adi;
    }
}

Servisimizi oluşturalım.

@Service
public class OgrenciService {
    private static final Logger logger = LoggerFactory.getLogger(OgrenciService.class);
    public List<Ogrenci> getOgrenci(){
        logger.info("getOgrenci() çalıştı.");
        return Arrays.asList(new Ogrenci(1, "burak"),new Ogrenci(2, "Ali"));
    }
}Spring Boot Dersleri Spring Logging Uygulama Örneği

logger değişkenimizi tanımlayarak OgrenciService sınıfında oluşacak durumların loglanmasını metodun içerisinde log level derecesini belirterek mesaj içeriğimizi oluşturabiliyoruz.

Controllerimizi oluşturalım.

@RestController
public class OgrenciController {

    private static final Logger logger = LoggerFactory.getLogger(OgrenciController.class);

    @Autowired
    private OgrenciService ogrenciService;

    @GetMapping("/ogrenciList")
    public List<Ogrenci> getOgrenci() {
        logger.info("inside OgrenciController.getOgrenci() çalıştı.");
        return ogrenciService.getOgrenci();
    }
}

logger değişkenimizi tanımlayarak OgrenciController sınıfında oluşacak durumların loglanmasını metodun içerisinde log level derecesini belirterek mesaj içeriğimizi oluşturabiliyoruz.

Log içeriğimizin nasıl formatta yazılacağını log dosyasının boyutu gibi ayarlamaları ise logback.xml dosyasında belirtibiliyoruz. Örnek olarak bir ayar dosyası oluşturalım.

    <appender name="STDOUT"
              class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>
    <appender name="FILE" class="ch.qos.logback.core.FileAppender">
        <file>app.log</file>
        <encoder>
            <pattern>%date %level [%thread] %logger{10} [%file:%line] %msg%n </pattern>
        </encoder>
    </appender>
    <logger name="com.apress" level="DEBUG" additivity="false">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="FILE" />
    </logger>
    <root level="INFO">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="FILE" />
    </root>
</configuration>

Log levellerine göre farklı formatlar boyutlar belirlenebilir. Bizim belirteceğimiz dosyalara yazılabilmekteyiz. Sistem loglarını ise farklı dosyalara yazdırabiliriz. Bu dosyamız ise resources altında olmalıdır.

Projemizi çalıştırdığımız consola baktığımızda ise;

..
17:50:15.680 [http-nio-8080-exec-1] DEBUG o.s.web.servlet.DispatcherServlet - enableLoggingRequestDetails='false': request parameters and headers will be masked to prevent unsafe logging of potentially sensitive data
17:50:15.680 [http-nio-8080-exec-1] INFO  o.s.web.servlet.DispatcherServlet - Completed initialization in 6 ms
17:50:15.685 [http-nio-8080-exec-1] DEBUG o.s.web.servlet.DispatcherServlet - GET "/ogrenciList", parameters={}
17:50:15.687 [http-nio-8080-exec-1] DEBUG o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped to com.burakkutbay.springbootlogging.controller.OgrenciController#getOgrenci()
17:50:15.694 [http-nio-8080-exec-1] INFO  c.b.s.controller.OgrenciController - inside OgrenciController.getOgrenci() çalıştı.
17:50:15.695 [http-nio-8080-exec-1] INFO  c.b.s.service.OgrenciService - getOgrenci() çalıştı.
..

Projenin Kaynak Kodlarına Ulaş
Önceki Ders: Swagger API Dökümantasyon Kullanım Örneği
Spring Boot Dersleri
Sonraki Ders: Pagination Uygulama İşlemleri

More in:Spring Boot

You may also like

Leave a reply

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir