Spring Boot - Logging

Bài viết gốc xem tại : https://www.tutorialspoint.com/spring_boot/spring_boot_logging.htm

Spring Boot sử dụng ghi nhật ký Apache Commons cho tất cả ghi nhật ký nội bộ. Các cấu hình mặc định của Spring Boot cung cấp hỗ trợ cho việc sử dụng Java Util Logging, Log4j2 và Logback. Sử dụng chúng, chúng ta có thể định cấu hình ghi nhật ký bảng điều khiển cũng như ghi nhật ký tệp.

Nếu bạn đang sử dụng Spring Boot Starters, Logback sẽ hỗ trợ tốt cho việc ghi nhật ký. Bên cạnh đó, Logback cũng cung cấp khả năng hỗ trợ tốt cho Common Logging, Util Logging, Log4J và SLF4J.

Định dạng nhật ký

Định dạng Spring Boot Log mặc định được hiển thị trong ảnh chụp màn hình bên dưới.

cung cấp cho bạn thông tin sau -

  • Ngày và giờ cung cấp ngày và giờ của nhật ký
  • Mức nhật ký hiển thị THÔNG TIN, LỖI hoặc CẢNH BÁO
  • Xử lý ID
  • --- là một dấu phân cách
  • Tên chuỗi được đặt trong dấu ngoặc vuông []
  • Tên trình ghi hiển thị tên lớp Nguồn
  • Thông báo nhật ký

Đầu ra nhật ký bảng điều khiển

Thông báo nhật ký mặc định sẽ in ra cửa sổ bảng điều khiển. Theo mặc định, thông báo nhật ký “THÔNG TIN”, “LỖI” và “CẢNH BÁO” sẽ in trong tệp nhật ký.

Nếu bạn phải bật nhật ký mức gỡ lỗi, hãy thêm cờ gỡ lỗi khi khởi động ứng dụng của bạn bằng lệnh hiển thị bên dưới:

java –jar demo.jar --debug

Bạn cũng có thể thêm chế độ gỡ lỗi vào tệp application.properties của mình như được hiển thị ở đây -

debug = true

Đầu ra nhật ký tệp

Theo mặc định, tất cả nhật ký sẽ in trên cửa sổ bảng điều khiển chứ không phải trong tệp. Nếu bạn muốn in nhật ký trong một tệp, bạn cần đặt thuộc tính logging.file hoặc logging.path trong tệp application.properties.

Bạn có thể chỉ định đường dẫn tệp nhật ký bằng thuộc tính được hiển thị bên dưới. Lưu ý rằng tên tệp nhật ký là spring.log.

logging.path = /var/tmp/

Bạn có thể chỉ định tên tệp nhật ký của riêng mình bằng thuộc tính được hiển thị bên dưới -

logging.file = /var/tmp/mylog.log

Lưu ý - các tệp sẽ tự động xoay sau khi đạt đến kích thước 10 MB.

Mức độ nhật ký

Spring Boot hỗ trợ tất cả các cấp của trình ghi nhật ký như “TRACE”, “GỠ LỖI”, “THÔNG TIN”, “CẢNH BÁO”, “LỖI”, “MỠ BỤNG”, “TẮT”. Bạn có thể xác định trình ghi gốc trong tệp application.properties như hình dưới đây:

logging.level.root = WARN

Lưu ý - Logback không hỗ trợ nhật ký mức “FATAL”. Nó được ánh xạ tới nhật ký cấp "LỖI".

Định cấu hình Logback

Logback hỗ trợ cấu hình dựa trên XML để xử lý các cấu hình Spring Boot Log. Chi tiết cấu hình ghi nhật ký được định cấu hình trong tệp logback.xml . Tệp logback.xml nên được đặt trong classpath.

Bạn có thể định cấu hình nhật ký cấp ROOT trong tệp Logback.xml bằng cách sử dụng mã được cung cấp bên dưới:

<?xml version = "1.0" encoding = "UTF-8"?>
<configuration>
   <root level = "INFO">
   </root>
</configuration>

Bạn có thể định cấu hình trình ứng dụng bảng điều khiển trong tệp Logback.xml được cung cấp bên dưới.

<?xml version = "1.0" encoding = "UTF-8"?>
<configuration>
   <appender name = "STDOUT" class = "ch.qos.logback.core.ConsoleAppender"></appender>
   <root level = "INFO">
      <appender-ref ref = "STDOUT"/> 
   </root>
</configuration>

Bạn có thể định cấu hình trình kết nối tệp trong tệp Logback.xml bằng cách sử dụng mã được cung cấp bên dưới. Lưu ý rằng bạn cần chỉ định đường dẫn tệp Nhật ký bên trong tệp đính kèm.

<?xml version = "1.0" encoding = "UTF-8"?>
<configuration>
   <appender name = "FILE" class = "ch.qos.logback.core.FileAppender">
      <File>/var/tmp/mylog.log</File>
   </appender>   
   <root level = "INFO">
      <appender-ref ref = "FILE"/>
   </root>
</configuration>

Bạn có thể xác định mẫu Nhật ký trong tệp logback.xml bằng cách sử dụng mã được cung cấp bên dưới. Bạn cũng có thể xác định tập hợp các mẫu nhật ký được hỗ trợ bên trong bảng điều khiển hoặc trình duyệt nhật ký tệp bằng cách sử dụng mã được cung cấp bên dưới:

<pattern>[%d{yyyy-MM-dd'T'HH:mm:ss.sss'Z'}] [%C] [%t] [%L] [%-5p] %m%n</pattern>

Mã cho tệp logback.xml hoàn chỉnh được cung cấp bên dưới. Bạn phải đặt cái này trong đường dẫn lớp.

<?xml version = "1.0" encoding = "UTF-8"?>
<configuration>
   <appender name = "STDOUT" class = "ch.qos.logback.core.ConsoleAppender">
      <encoder>
         <pattern>[%d{yyyy-MM-dd'T'HH:mm:ss.sss'Z'}] [%C] [%t] [%L] [%-5p] %m%n</pattern>
      </encoder>
   </appender>
   
   <appender name = "FILE" class = "ch.qos.logback.core.FileAppender">
      <File>/var/tmp/mylog.log</File>
      <encoder>
         <pattern>[%d{yyyy-MM-dd'T'HH:mm:ss.sss'Z'}] [%C] [%t] [%L] [%-5p] %m%n</pattern>
      </encoder>
   </appender>
   
   <root level = "INFO">
      <appender-ref ref = "FILE"/>
      <appender-ref ref = "STDOUT"/> 
   </root>
</configuration>

Đoạn mã dưới đây cho thấy cách thêm trình ghi nhật ký slf4j trong tệp lớp chính của Spring Boot.

package com.tutorialspoint.demo;

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

@SpringBootApplication
public class DemoApplication {
   private static final Logger logger = LoggerFactory.getLogger(DemoApplication.class);
   
   public static void main(String[] args) {
      logger.info("this is a info message");
      logger.warn("this is a warn message");
      logger.error("this is a error message");
      SpringApplication.run(DemoApplication.class, args);
   }
}

Kết quả mà bạn có thể thấy trong cửa sổ bảng điều khiển được hiển thị ở đây -

Kết quả mà bạn có thể thấy trong tệp nhật ký được hiển thị ở đây –