Code ví dụ Spring Boot Logging (Ghi log với SLF4J)

Code ví dụ Spring Boot Logging (Ghi log với SLF4J).

Ghi Log trong Spring Boot

Khi bạn tạo Spring Boot Project. Bản thân thư viện spring-boot-starter đã chứa thư viện thực hiện logging SLF4J với cài đặt của nó (thường là common logging, slf4j) nên bạn không cần thực hiện thêm bất kỳ thư viện nào nữa

Tạo Spring Boot Project

spring starter project

Code ví dụ Spring Boot Logging (Ghi log với SLF4J)

Ở phần dependencies không cần thêm bất kỳ thư viện nào khác.

Code ví dụ Spring Boot Logging (Ghi log với SLF4J)

Cấu trúc project

Code ví dụ Spring Boot Logging (Ghi log với SLF4J)

File application.yaml

logging:
  file: application.log
  level:
    root: DEBUG
    org.springframework: WARN
    stackjava.com.sblogging.service: INFO

Trường hợp bạn muốn sử dụng file application.properties thay cho application.yaml

logging.file: application.log
logging.level.root: DEBUG
logging.level.org.springframework: WARN
logging.level.stackjava.com.sblogging.service: INFO

Trong đó

  • Tiền tố logging đánh dấu đoạn bắt đầu cấu hình cho việc ghi log
  • file: application.log: log sẽ được ghi ra file application.log (nếu bạn muốn ghi ra nơi khác thì sửa application.log thành path file cần ghi log là được)
  • level: mức độ ghi log, root là áp dụng cho tất cả, org.springframework là áp dụng cho các class trong package của spring, stackjava.com.sblogging.service là áp dụng cho log được ghi bên trong class của package stackjava.com.sblogging.service

Các mức độ / level ghi log:

  • TRACE
  • DEBUG
  • INFO
  • WARN
  • ERROR
  • FATAL
  • OFF

Giả sử bạn để level log là INFO thì các log DEBUG hay TRACE sẽ không được lựu lại. (2 level cuối chỉ áp dụng cho 1 số ít thư viện)

(Xem lại Ghi log ra file với Log4J, Ghi log ra database với Log4J để hiểu thêm cách định dạng log, ghi log ra database…)

File main

package stackjava.com.sblogging;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;

import stackjava.com.sblogging.service.DemoService;

@SpringBootApplication
public class SpringBootLoggingApplication {
  
  private static Logger logger = LoggerFactory.getLogger(SpringBootLoggingApplication.class);

  public static void main(String[] args) {
    ApplicationContext applicationContext = SpringApplication.run(SpringBootLoggingApplication.class, args);
    logger.info("debug enabled: {}", logger.isDebugEnabled());
    logger.trace("trace");
    logger.debug("debug");
    logger.info("info");
    logger.warn("warn");
    logger.error("error");
    
    DemoService demoService = applicationContext.getBean(DemoService.class);
    demoService.hello();
  }
}

File Service

package stackjava.com.sblogging.service;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;

@Service
public class DemoService {
  
  private static final Logger logger = LoggerFactory.getLogger(DemoService.class);

  public void hello() {
    logger.info("debug enabled: {}", logger.isDebugEnabled());
    logger.trace("trace");
    logger.debug("debug");
    logger.info("info");
    logger.warn("warn");
    logger.error("error");
  }
}

Demo

ví dụ spring boot logging

Class DemoService.java nằm trong package stackjava.com.sblogging.service nên nó chỉ hiện log từ level INFO

File application.log được tạo ra

ví dụ spring boot ghi log ra file

Okay, Done!

Download code ví dụ trên tại đây.

 

 

References:

https://docs.spring.io/…/boot-features-logging.html

https://docs.spring.io/…/howto-logging.html

stackjava.com