Spring Boot - Ghi nhật ký
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 -
Date và Time cung cấp ngày và giờ của nhật ký
Log level hiển thị THÔNG TIN, LỖI hoặc CẢNH BÁO
Process ID
--- là một dấu phân cách
Thread name được đặt trong dấu ngoặc vuông []
Logger Name 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ẽ được 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ínhlogging.file hoặc là 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
Note - 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
Note- 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 tronglogback.xmltập tin. 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 Đăng nhập trong logback.xmlsử 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 -