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);
   }
}

ผลลัพธ์ที่คุณสามารถเห็นในหน้าต่างคอนโซลแสดงที่นี่ -

ผลลัพธ์ที่คุณเห็นในไฟล์บันทึกจะแสดงที่นี่ -