Twitter Youtube Github
Burak Kutbay'ın Kişisel Blog'u |

Type and hit Enter to search

  • Etkinliklerim
  • Quarkus
  • Spring Cloud
  • Spring Boot
  • Spring JDBC Template
  • Spring MVC
  • RabbitMQ
  • Hibernate
  • JSP
  • Java 21
  • Java 8
  • Java Server Faces
  • PrimeFaces
  • Servlet
  • JDBC
  • JSTL
  • / Diğer
    • Ünlü Bilişimciler
    • C Sharp
    • Kütüphane
    • Makale
Spring Boot

Spring Boot Dersleri Spring Logging Uygulama Örneği

Paylaş

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ğiCode 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)

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

Tags:

spring boot dersleriSpring Boot Uygulama Örneğispring derslerispring logging

Paylaş

Diğer Yazılar

Spring Dersleri
Previous

Spring Boot ile GraphQL Kullanmak Örnek Uygulama

Spring Boot Pagination Uygulama Örneği
Next

Spring Boot Dersleri Pagination Uygulama İşlemleri

Next
Spring Boot Pagination Uygulama Örneği
07 Kasım 2020

Spring Boot Dersleri Pagination Uygulama İşlemleri

Previews
02 Kasım 2020

Spring Boot ile GraphQL Kullanmak Örnek Uygulama

Spring Dersleri

No Comment! Be the first one.

Bir yanıt yazın Yanıtı iptal et

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

İlgini Çekebilir

Chaos Monkey Spring Boot Uygulama Ornegi

Chaos Monkey Nedir? #1 Uygulamanızın Sınırlarını Test Edin

TestContainers Nedir Spring Boot MongoDB Uygulama Örneği

TestContainers ile Spring Boot & MongoDB Test İşlemleri

Spring Boot Dersleri @ConditionalOnExpression Uygulama Ornegi

Spring Boot @ConditionalOnExpression Nedir? Uygulama Örneği

Spring Boot Dersleri Content Negotiation Uygulama Örneği

Spring Boot Content Negotiation XML – JSON Uygulama Örneği

Burak Kutbay'ın Kişisel Blog'u |

© 2008 - ∞, Her hakkı saklıdır.

Link

  • Hakkımda
  • İletişim
  • Arşiv

Kategori

Cloud
Node.js
Java 24
Android
Struts
Röportaj
Gradle
Amazon Web Services
Vue.js
Video
Redis
Spring Boot 3.0
Debezium
Mikroservis Mimarisi
Spring Native
Spring Cloud Stream
Etkinlikler
XCode
JPA
Objective C
iPhone Uygulama Geliştirme
PostgreSQL
Spring Security
MongoDB
Java 21
Spring Data
Apache Kafka
Yaptığım Projeler
Servlet
Git
Maven
Design Patterns
DevOps
Linux
Spring Jdbc Template
RabbitMQ
JDBC
PrimeFaces
Manset
Google
Spring
Spring MVC
Spring Cloud
OCA Java SE 8
Quarkus
Spring Core
Microsoft
Veritabanı
Java SE
Tanıyalım
Hibernate
Teknoloji
Okuduğum Kitaplar
Java Server Faces
Yazılım Mühendisliği
C Sharp
Spring Boot
Java
Günlüğüm
Java Server Page
Makale

Takip Et

Twitter Youtube Github
  • Etkinliklerim
  • Quarkus
  • Spring Cloud
  • Spring Boot
  • Spring JDBC Template
  • Spring MVC
  • RabbitMQ
  • Hibernate
  • JSP
  • Java 21
  • Java 8
  • Java Server Faces
  • PrimeFaces
  • Servlet
  • JDBC
  • JSTL
  • / Diğer
    • Ünlü Bilişimciler
    • C Sharp
    • Kütüphane
    • Makale