Spring Boot - การบันทึก
Spring Boot ใช้การบันทึก Apache Commons สำหรับการบันทึกภายในทั้งหมด การกำหนดค่าเริ่มต้นของ Spring Boot ให้การสนับสนุนสำหรับการใช้ Java Util Logging, Log4j2 และ Logback ด้วยการใช้สิ่งเหล่านี้เราสามารถกำหนดค่าการบันทึกคอนโซลและการบันทึกไฟล์
หากคุณใช้ Spring Boot Starters Logback จะให้การสนับสนุนที่ดีสำหรับการบันทึก นอกจากนี้ Logback ยังให้การสนับสนุนที่ดีสำหรับ Common Logging, Util Logging, Log4J และ SLF4J
รูปแบบบันทึก
รูปแบบ Spring Boot Log เริ่มต้นจะแสดงในภาพหน้าจอด้านล่าง
ซึ่งให้ข้อมูลต่อไปนี้ -
Date และ Time ที่ให้วันที่และเวลาของบันทึก
Log level แสดงข้อมูลข้อผิดพลาดหรือคำเตือน
Process ID
--- ซึ่งเป็นตัวคั่น
Thread name อยู่ภายในวงเล็บเหลี่ยม []
Logger Name ที่แสดงชื่อคลาส Source
ข้อความบันทึก
เอาต์พุตบันทึกคอนโซล
ข้อความบันทึกเริ่มต้นจะพิมพ์ไปที่หน้าต่างคอนโซล โดยค่าเริ่มต้นข้อความบันทึก“ INFO”“ ERROR” และ“ WARN” จะพิมพ์ในไฟล์บันทึก
หากคุณต้องเปิดใช้งานบันทึกระดับการดีบักให้เพิ่มแฟล็กการดีบักเมื่อเริ่มต้นแอปพลิเคชันของคุณโดยใช้คำสั่งที่แสดงด้านล่าง -
java –jar demo.jar --debug
คุณยังสามารถเพิ่มโหมดดีบักลงในไฟล์ application.properties ของคุณได้ดังที่แสดงไว้ที่นี่ -
debug = true
เอาต์พุตบันทึกไฟล์
ตามค่าเริ่มต้นบันทึกทั้งหมดจะพิมพ์บนหน้าต่างคอนโซลไม่ใช่ในไฟล์ หากคุณต้องการพิมพ์บันทึกในไฟล์คุณต้องตั้งค่าคุณสมบัติlogging.file หรือ logging.path ในไฟล์ application.properties
คุณสามารถระบุพา ธ ไฟล์บันทึกโดยใช้คุณสมบัติที่แสดงด้านล่าง โปรดสังเกตว่าชื่อล็อกไฟล์คือ spring.log
logging.path = /var/tmp/
คุณสามารถระบุชื่อไฟล์บันทึกของตัวเองโดยใช้คุณสมบัติที่แสดงด้านล่าง -
logging.file = /var/tmp/mylog.log
Note - ไฟล์จะหมุนโดยอัตโนมัติหลังจากถึงขนาด 10 MB
ระดับการบันทึก
Spring Boot รองรับทุกระดับคนตัดไม้เช่น“ TRACE”,“ DEBUG”,“ INFO”,“ WARN”,“ ERROR”,“ FATAL”,“ OFF” คุณสามารถกำหนด Root logger ในไฟล์ application.properties ดังที่แสดงด้านล่าง -
logging.level.root = WARN
Note- Logback ไม่รองรับการบันทึกระดับ“ FATAL” มีการแมปกับบันทึกระดับ“ ERROR”
กำหนดค่า Logback
Logback รองรับการกำหนดค่าตาม XML เพื่อจัดการกับการกำหนดค่า Spring Boot Log รายละเอียดการกำหนดค่าการบันทึกถูกกำหนดค่าในlogback.xmlไฟล์. ไฟล์ logback.xml ควรอยู่ใต้ classpath
คุณสามารถกำหนดค่าล็อกระดับ ROOT ในไฟล์ Logback.xml โดยใช้รหัสที่ระบุด้านล่าง -
<?xml version = "1.0" encoding = "UTF-8"?>
<configuration>
<root level = "INFO">
</root>
</configuration>
คุณสามารถกำหนดค่าคอนโซล appender ในไฟล์ Logback.xml ที่ระบุด้านล่าง
<?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>
คุณสามารถกำหนดค่าตัวผนวกไฟล์ในไฟล์ Logback.xml โดยใช้รหัสที่ระบุด้านล่าง โปรดทราบว่าคุณต้องระบุเส้นทางของไฟล์บันทึกภายในตัวขยายไฟล์
<?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>
คุณสามารถกำหนดรูปแบบการเข้าสู่ระบบได้ logback.xmlไฟล์โดยใช้รหัสที่ระบุด้านล่าง คุณยังสามารถกำหนดชุดรูปแบบการบันทึกที่รองรับภายในคอนโซลหรือตัวเพิ่มไฟล์บันทึกโดยใช้รหัสที่ระบุด้านล่าง -
<pattern>[%d{yyyy-MM-dd'T'HH:mm:ss.sss'Z'}] [%C] [%t] [%L] [%-5p] %m%n</pattern>
รหัสสำหรับไฟล์ logback.xml ที่สมบูรณ์มีให้ด้านล่าง คุณต้องวางสิ่งนี้ในเส้นทางชั้นเรียน
<?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>
โค้ดด้านล่างนี้แสดงวิธีการเพิ่ม slf4j logger ในไฟล์คลาสหลักของ 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);
}
}
ผลลัพธ์ที่คุณสามารถเห็นในหน้าต่างคอนโซลแสดงที่นี่ -
ผลลัพธ์ที่คุณเห็นในไฟล์บันทึกจะแสดงที่นี่ -