นี่เป็นคำถามที่ง่ายมาก แต่ฉันไม่สามารถหาข้อมูลได้
(บางทีความรู้ของฉันเกี่ยวกับกรอบงาน Java ขาดไปอย่างรุนแรง)
ฉันจะตั้งค่าระดับการบันทึกด้วย application.properties ได้อย่างไร?
และตำแหน่งไฟล์บันทึก ฯลฯ ?
นี่เป็นคำถามที่ง่ายมาก แต่ฉันไม่สามารถหาข้อมูลได้
(บางทีความรู้ของฉันเกี่ยวกับกรอบงาน Java ขาดไปอย่างรุนแรง)
ฉันจะตั้งค่าระดับการบันทึกด้วย application.properties ได้อย่างไร?
และตำแหน่งไฟล์บันทึก ฯลฯ ?
คำตอบ:
อัปเดต:เริ่มต้นด้วย Spring Boot v1.2.0.RELEASE การตั้งค่าในapplication.properties
หรือapplication.yml
ใช้ ดูส่วนบันทึกระดับของคู่มืออ้างอิง
logging.level.org.springframework.web: DEBUG
logging.level.org.hibernate: ERROR
สำหรับ Spring Boot เวอร์ชั่นก่อนหน้าคุณไม่สามารถทำได้ คุณเพียงแค่ต้องใช้การกำหนดค่าปกติสำหรับกรอบการบันทึกของคุณ (log4j, logback) สำหรับสิ่งนั้น เพิ่มไฟล์ config ที่เหมาะสม ( log4j.xml
หรือlogback.xml
) ไปยังsrc/main/resources
ไดเรกทอรีและกำหนดค่าตามที่คุณต้องการ
คุณสามารถเปิดใช้งานการบันทึกการดีบักโดยระบุ--debug
เมื่อเริ่มต้นแอปพลิเคชันจากบรรทัดคำสั่ง
Spring Boot ยังเป็นจุดเริ่มต้นที่ดีสำหรับการย้อนกลับเพื่อกำหนดค่าเริ่มต้นการระบายสี ฯลฯไฟล์base.xmlซึ่งคุณสามารถรวมไว้ในไฟล์ logback.xml ของคุณได้ (แนะนำให้ทำเช่นนี้จากค่าเริ่มต้นlogback.xmlใน Spring Boot
<include resource="org/springframework/boot/logging/logback/base.xml"/>
application.properties
หรือapplication.yml
นำไปใช้ตามคำตอบของ Richard (modulo :
หรือ=
ปัญหา --- โคลอนดูเหมือนว่าใช้ได้สำหรับฉัน)
คุณสามารถทำได้โดยใช้ application.properties ของคุณ
logging.level.=ERROR
-> ตั้งค่าระดับการบันทึกรากเป็นข้อผิดพลาด
...
logging.level.=DEBUG
-> ตั้งค่าระดับการบันทึกรากเป็น DEBUG
logging.file=${java.io.tmpdir}/myapp.log
-> ตั้งค่าเส้นทางไฟล์บันทึกสัมบูรณ์เป็น TMPDIR / myapp.log
ชุดของ application.properties ที่เป็นค่าเริ่มต้นคือการใช้โปรไฟล์: application.properties:
spring.application.name=<your app name here>
logging.level.=ERROR
logging.file=${java.io.tmpdir}/${spring.application.name}.log
application-dev.properties:
logging.level.=DEBUG
logging.file=
เมื่อคุณพัฒนาภายใน IDE ที่คุณชื่นชอบคุณเพียงเพิ่ม-Dspring.profiles.active=dev
อาร์กิวเมนต์ VM เป็นการกำหนดค่า run / debug ของแอปของคุณ
สิ่งนี้จะทำให้คุณมีข้อผิดพลาดเฉพาะการเข้าสู่ระบบการผลิตและการบันทึกการดีบักในระหว่างการพัฒนาโดยไม่ต้องเขียนผลลัพธ์ไปยังไฟล์บันทึก สิ่งนี้จะปรับปรุงประสิทธิภาพในระหว่างการพัฒนา (และบันทึกไดรฟ์ SSD ในบางชั่วโมงของการทำงาน))
logging.level.:DEBUG
spring-boot 1.4.0
: logging.level.=DEBUG
จะทำให้แอปพลิเคชันไม่สามารถเริ่มต้นและได้รับข้อผิดพลาด:java.lang.ClassCircularityError: java/util/logging/LogRecord
logging.level.
เป็นเพียงทางลัดทางลัดสำหรับความสะดวกสบายlogging.level.root
ซึ่งอาจจะเป็น (1) มีแนวโน้มที่จะสับสนน้อยกว่ากับการพิมพ์ผิด (2) มีความชัดเจนมากขึ้นและ (3) การทำงานกับ=
เครื่องหมายกำหนดซึ่งให้ความมั่นคงโดยรวมมากขึ้น ไปยังไฟล์การกำหนดค่า
วิธีการที่เหมาะสมที่จะตั้งรากlogging.level.root
ระดับการบันทึกการใช้ทรัพย์สิน ดูเอกสารซึ่งได้รับการปรับปรุงเนื่องจากคำถามนี้ถูกถามตั้งแต่แรก
ตัวอย่าง:
logging.level.root=WARN
com.company.myproject
สมมติว่าแอพลิเคชันของคุณมีชื่อแพคเกจเป็น จากนั้นคุณสามารถตั้งค่าระดับการบันทึกสำหรับคลาสภายในโครงการของคุณตามที่ระบุด้านล่างในไฟล์ application.properties
logging.level.com.company.myproject = DEBUG
logging.level.org.springframework.web = DEBUG
และlogging.level.org.hibernate = DEBUG
จะตั้งค่าระดับการบันทึกสำหรับคลาสของ Spring framework web และ Hibernate เท่านั้น
สำหรับการตั้งค่าการใช้ตำแหน่งไฟล์บันทึก
logging.file = /home/ubuntu/myproject.log
หากคุณอยู่ใน Spring Boot คุณสามารถเพิ่มคุณสมบัติต่อไปนี้โดยตรงในไฟล์application.propertiesเพื่อตั้งค่าระดับการบันทึกกำหนดรูปแบบการบันทึกและจัดเก็บบันทึกในไฟล์ภายนอก
เหล่านี้คือระดับการบันทึกที่แตกต่างกันและคำสั่งซื้อจากขั้นต่ำ << สูงสุด
ปิด << FATAL << ข้อผิดพลาด << คำเตือน << ข้อมูล << การดีบัก << การติดตาม << ทั้งหมด
# To set logs level as per your need.
logging.level.org.springframework = debug
logging.level.tech.hardik = trace
# To store logs to external file
# Here use strictly forward "/" slash for both Windows, Linux or any other os, otherwise, its won't work.
logging.file=D:/spring_app_log_file.log
# To customize logging pattern.
logging.pattern.file= "%d{yyyy-MM-dd HH:mm:ss} - %msg%n"
โปรดผ่านลิงค์นี้เพื่อปรับแต่งบันทึกของคุณให้ชัดเจนยิ่งขึ้น
https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-logging.html
ทำให้แน่ใจว่าเคล็ดลับ Dave Syer ได้รับความรักเนื่องจากการเพิ่มdebug=true
ไปยัง application.properties จะเปิดใช้งานการบันทึกการดีบักอย่างแน่นอน
ในกรณีที่คุณต้องการใช้เฟรมเวิร์กการบันทึกที่แตกต่างกันตัวอย่างเช่น log4j ฉันพบว่าวิธีที่ง่ายที่สุดคือการปิดใช้งานการบันทึกของบู๊ทส์สปริงและใช้งานของคุณเอง ด้วยวิธีนี้ฉันสามารถกำหนดค่า loglevel ทุกอันในไฟล์เดียวคือ log4j.xml (ในกรณีของฉัน) นั่นคือ
เพื่อให้บรรลุเป้าหมายคุณต้องเพิ่มบรรทัดเหล่านั้นใน pom.xml ของคุณ:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j</artifactId>
</dependency>
คุณอาจมีการอ้างอิงแรกแล้วและต้องการอีกสองรายการเท่านั้น โปรดทราบว่าตัวอย่างนี้ครอบคลุมเฉพาะ log4j
เพียงเท่านี้คุณก็พร้อมที่จะกำหนดค่าการบันทึกสำหรับการบู๊ตภายในไฟล์ config4 ของคุณ!
log4j.properties
ของฉันและ
คุณสามารถลองตั้งค่าระดับการบันทึกเป็น DEBUG ซึ่งจะแสดงทุกอย่างขณะเริ่มต้นแอปพลิเคชัน
logging.level.root=DEBUG
สำหรับบันทึก: เอกสารอย่างเป็นทางการเช่นเดียวกับ Spring Boot v1.2.0.RELEASE และ Spring v4.1.3.RELEASE:
หากการเปลี่ยนแปลงเพียงอย่างเดียวที่คุณต้องใช้ในการบันทึกคือการกำหนดระดับของตัวบันทึกต่าง ๆ คุณสามารถทำได้ใน application.properties โดยใช้คำนำหน้า "logging.level" เช่น
logging.level.org.springframework.web: DEBUG
logging.level.org.hibernate: ERROR
นอกจากนี้คุณยังสามารถตั้งค่าตำแหน่งของไฟล์ที่จะเข้าสู่ระบบ (นอกเหนือจากคอนโซล) โดยใช้ "logging.file"
ในการกำหนดค่าการตั้งค่าที่ละเอียดยิ่งขึ้นของระบบการบันทึกคุณจำเป็นต้องใช้รูปแบบการกำหนดค่าดั้งเดิมที่รองรับโดย LoggingSystem โดยค่าเริ่มต้น Spring Boot จะรับการกำหนดค่าดั้งเดิมจากตำแหน่งเริ่มต้นสำหรับระบบ (เช่น classpath: logback.xml สำหรับ Logback) แต่คุณสามารถตั้งค่าตำแหน่งของไฟล์กำหนดค่าได้โดยใช้คุณสมบัติ "logging.config"
หากคุณต้องการตั้งค่ารายละเอียดเพิ่มเติมโปรดเพิ่มชื่อไฟล์บันทึกการตั้งค่า "logback.xml" หรือ "logback-spring.xml"
ในไฟล์ application.properties ของคุณให้ป้อนข้อมูลดังนี้:
logging.config: classpath:logback-spring.xml
ใน loback-spring.xml ให้ป้อนข้อมูลดังนี้:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/base.xml"/>
<appender name="ROOT_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<file>sys.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_DIR}/${SYSTEM_NAME}/system.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>500MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<pattern>%-20(%d{yyy-MM-dd HH:mm:ss.SSS} [%X{requestId}]) %-5level - %logger{80} - %msg%n
</pattern>
</encoder>
</appender>
<appender name="BUSINESS_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>TRACE</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<file>business.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_DIR}/${SYSTEM_NAME}/business.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>500MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<pattern>%-20(%d{yyy-MM-dd HH:mm:ss.SSS} [%X{requestId}]) %-5level - %logger{80} - %msg%n
</pattern>
</encoder>
</appender>
<logger name="{project-package-name}" level="TRACE">
<appender-ref ref="BUSINESS_APPENDER" />
</logger>
<root level="INFO">
<appender-ref ref="ROOT_APPENDER" />
</root>
</configuration>
คำตอบที่มีอยู่นั้นยอดเยี่ยม ฉันต้องการแบ่งปันคุณลักษณะการบูตฤดูใบไม้ผลิใหม่ให้กับคุณเพื่อจัดกลุ่มบันทึกและตั้งค่าระดับการบันทึกในกลุ่มทั้งหมด
ตัวอย่างจากเอกสาร:
logging.group.tomcat=org.apache.catalina, org.apache.coyote, org.apache.tomcat
logging.level.tomcat=TRACE
มันเป็นคุณสมบัติที่ดีที่นำความยืดหยุ่นมากขึ้น
ในการกำหนดค่าปัจจุบันของฉันฉันมีมันกำหนดไว้ในapplication.yamlเช่นนั้น:
logging:
level:
ROOT: TRACE
ฉันใช้บูทบูท: 2.2.0 ปล่อย คุณสามารถกำหนดแพ็คเกจใด ๆ ที่ควรมีระดับการติดตามเช่นนั้น
ในโครงการ boot ฤดูใบไม้ผลิเราสามารถเขียน logging.level.root = WARN แต่นี่คือปัญหาเราต้องเริ่มต้นใหม่อีกครั้งแม้ว่าเราจะเพิ่มการพึ่งพา devtools ในไฟล์คุณสมบัติถ้าเราแก้ไขค่าใด ๆ จะไม่ตรวจสอบอัตโนมัติสำหรับข้อ จำกัด นี้ฉันรู้ โซลูชัน i, e เราสามารถเพิ่มแอคทูเอเตอร์ใน pom.xml และส่งผ่านระดับตัวบันทึกดังที่แสดงในไคลเอนต์บุรุษไปรษณีย์ใน url bar http: // localhost: 8080 / loggers / ROOTหรือ http: // localhost: 8080 / loggers / com . mycompany และในเนื้อความคุณสามารถผ่านรูปแบบ json ดังด้านล่าง
{
"configuredLevel": "WARN"
}
ในกรณีของ eclipse IDE และโครงการของคุณคือ maven อย่าลืมล้างและสร้างโครงการเพื่อให้สอดคล้องกับการเปลี่ยนแปลง
ด้วย Springboot 2 คุณสามารถตั้งค่าระดับการบันทึกรากด้วยตัวแปรสภาพแวดล้อมดังนี้:
logging.level.root=DEBUG
หรือคุณสามารถตั้งค่าการบันทึกเฉพาะสำหรับแพ็คเกจเช่นนี้:
logging.level.my.package.name=TRACE
LOGGING_LEVEL_ROOT=DEBUG
โดยใช้ไวยากรณ์ของกรณีอูฐ
Settings
->Config Vars
ตั้งค่าlogging.level.com.yourpackage
เป็นระดับที่ต้องการ (INFO, ERROR, DEBUG)