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>
Code language: HTML, XML (xml)
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;
}
}
Code language: JavaScript (javascript)
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
Code language: JavaScript (javascript)
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();
}
}
Code language: JavaScript (javascript)
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>
Code language: HTML, XML (xml)
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ı.
..
Code language: PHP (php)
No Comment! Be the first one.