Jawaban:
Pembaruan: Dimulai dengan Spring Boot v1.2.0.RELEASE, pengaturan dalam application.properties
atau application.yml
memang berlaku. Lihat bagian Tingkat Log dari panduan referensi.
logging.level.org.springframework.web: DEBUG
logging.level.org.hibernate: ERROR
Untuk versi Spring Boot sebelumnya, Anda tidak bisa. Anda hanya perlu menggunakan konfigurasi normal untuk kerangka logging Anda (log4j, logback) untuk itu. Tambahkan file konfigurasi yang sesuai ( log4j.xml
atau logback.xml
) ke src/main/resources
direktori dan konfigurasikan sesuai keinginan Anda.
Anda dapat mengaktifkan debug logging dengan menentukan --debug
saat memulai aplikasi dari baris perintah.
Spring Boot juga menyediakan titik awal yang bagus untuk logback untuk mengkonfigurasi beberapa default, mewarnai dll. File base.xml yang dapat Anda sertakan dalam file logback.xml Anda. (Ini juga disarankan dari logback.xml default di Spring Boot.
<include resource="org/springframework/boot/logging/logback/base.xml"/>
application.properties
atau application.yml
memang berlaku, seperti dijawab oleh Richard (modulo :
atau =
masalah --- usus besar tampaknya bekerja untuk saya).
Anda dapat melakukannya menggunakan properti aplikasi Anda.
logging.level.=ERROR
-> Setel level logging root ke kesalahan
...
logging.level.=DEBUG
-> Setel level logging root ke DEBUG
logging.file=${java.io.tmpdir}/myapp.log
-> Setel path file log absolut ke TMPDIR / myapp.log
Serangkaian aplikasi.properti yang
waras tentang logging menggunakan profil adalah: properti aplikasi:
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=
Ketika Anda mengembangkan di dalam IDE favorit Anda, Anda hanya menambahkan -Dspring.profiles.active=dev
argumen sebagai VM ke konfigurasi run / debug aplikasi Anda.
Ini akan memberi Anda hanya kesalahan log in produksi dan debug logging selama pengembangan TANPA menulis output ke file log. Ini akan meningkatkan kinerja selama pengembangan (dan menghemat drive SSD beberapa jam operasi;)).
logging.level.:DEBUG
spring-boot 1.4.0
: logging.level.=DEBUG
akan menyebabkan aplikasi gagal untuk memulai, dan mendapatkan kesalahan:java.lang.ClassCircularityError: java/util/logging/LogRecord
logging.level.
hanyalah cara pintas sintaksis kenyamanan logging.level.root
, yang dapat lebih disukai sebagai (1) kurang rentan menjadi bingung dengan kesalahan ketik, (2) berpotensi lebih eksplisit, dan (3) bekerja dengan =
tanda penugasan, yang memberikan konsistensi lebih menyeluruh secara keseluruhan ke file konfigurasi.
Cara yang tepat untuk mengatur level logging root adalah menggunakan properti logging.level.root
. Lihat dokumentasi , yang telah diperbarui sejak pertanyaan ini awalnya ditanyakan.
Contoh:
logging.level.root=WARN
Misalkan aplikasi Anda memiliki nama paket sebagai com.company.myproject
. Kemudian Anda dapat mengatur level logging untuk kelas di dalam proyek Anda seperti yang diberikan di bawah ini di file application.properties
logging.level.com.company.myproject = DEBUG
logging.level.org.springframework.web = DEBUG
dan logging.level.org.hibernate = DEBUG
akan mengatur level logging untuk kelas web framework Spring dan hanya Hibernate.
Untuk mengatur penggunaan lokasi file logging
logging.file = /home/ubuntu/myproject.log
Jika Anda menggunakan Spring Boot maka Anda dapat langsung menambahkan properti berikut di application.properties file untuk mengatur level logging, menyesuaikan pola logging, dan menyimpan log dalam file eksternal.
Ini adalah level logging yang berbeda dan urutannya dari minimum << maksimum.
OFF << FATAL << ERROR << PERINGATAN << INFO << DEBUG << TRACE << SEMUA
# 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"
Silakan lewati tautan ini untuk menyesuaikan log Anda dengan lebih jelas.
https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-logging.html
Jika Anda ingin menggunakan kerangka logging yang berbeda, log4j misalnya, saya menemukan pendekatan termudah adalah untuk menonaktifkan penebangan sendiri dan mengimplementasikan sendiri. Dengan begitu saya bisa mengkonfigurasi setiap loglevel dalam satu file, log4j.xml (dalam kasus saya) itu.
Untuk mencapai ini, Anda hanya perlu menambahkan baris-baris itu ke pom.xml Anda:
<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>
Anda mungkin sudah memiliki ketergantungan pertama dan hanya perlu dua lainnya. Harap dicatat, bahwa contoh ini hanya mencakup log4j.
Itu saja, sekarang Anda sudah siap untuk mengkonfigurasi logging untuk boot dalam file konfigurasi log4j Anda!
log4j.properties
.
Anda dapat mencoba mengatur level log ke DEBUG itu akan menampilkan segalanya saat memulai aplikasi
logging.level.root=DEBUG
Untuk catatan: dokumentasi resmi , seperti untuk Spring Boot v1.2.0.RELEASE dan Spring v4.1.3.RELEASE:
Jika satu-satunya perubahan yang perlu Anda lakukan untuk login adalah dengan mengatur level berbagai penebang maka Anda dapat melakukannya di application.properties menggunakan awalan "logging.level", mis.
logging.level.org.springframework.web: DEBUG
logging.level.org.hibernate: ERROR
Anda juga dapat mengatur lokasi file untuk log (selain konsol) menggunakan "logging.file".
Untuk mengonfigurasi pengaturan sistem logging yang lebih halus, Anda perlu menggunakan format konfigurasi asli yang didukung oleh LoggingSystem yang bersangkutan. Secara default Spring Boot mengambil konfigurasi asli dari lokasi default untuk sistem (misalnya classpath: logback.xml untuk Logback), tetapi Anda dapat mengatur lokasi file konfigurasi menggunakan properti "logging.config".
Jika Anda ingin mengatur lebih detail, silakan tambahkan nama file log config "logback.xml" atau "logback-spring.xml".
di file application.properties Anda, masukan seperti ini:
logging.config: classpath:logback-spring.xml
di loback-spring.xml, masukan seperti ini:
<?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>
Jawaban yang ada sangat bagus. Saya hanya ingin berbagi dengan Anda fitur boot musim semi baru yang memungkinkan untuk grup log dan mengatur level logging pada seluruh grup.
Contoh dari dokumen:
logging.group.tomcat=org.apache.catalina, org.apache.coyote, org.apache.tomcat
logging.level.tomcat=TRACE
Ini fitur bagus yang membawa lebih banyak fleksibilitas.
Dalam konfigurasi saya saat ini, saya telah mendefinisikannya di application.yaml seperti itu:
logging:
level:
ROOT: TRACE
Saya menggunakan spring-boot: 2.2.0.RELEASE. Anda dapat menentukan paket apa saja yang harus memiliki tingkat TRACE seperti itu.
dalam proyek boot musim semi kita dapat menulis logging.level.root = PERINGATAN tetapi di sini masalahnya adalah, kita harus memulai kembali bahkan kita menambahkan dependensi devtools, dalam file properti jika kita memodifikasi nilai apa pun tidak akan dapat terdeteksi secara otomatis, karena keterbatasan ini saya jadi tahu solusi i, e kita dapat menambahkan aktuator di pom.xml dan melewati level logger seperti di bawah ini yang ditunjukkan pada klien tukang pos di url bar http: // localhost: 8080 / loggers / ROOT atau http: // localhost: 8080 / loggers / com .mycompany dan di dalam tubuh Anda dapat melewati format json seperti di bawah ini
{
"configuredLevel": "WARN"
}
Dalam kasus gerhana IDE dan proyek Anda adalah pakar, ingatlah untuk membersihkan dan membangun proyek untuk mencerminkan perubahan.
Dengan Springboot 2 Anda dapat mengatur Level logging root dengan Variabel Lingkungan seperti ini:
logging.level.root=DEBUG
Atau Anda dapat mengatur pencatatan khusus untuk paket-paket seperti ini:
logging.level.my.package.name=TRACE
LOGGING_LEVEL_ROOT=DEBUG
Settings
->Config Vars
aturlogging.level.com.yourpackage
ke level yang diinginkan (INFO, ERROR, DEBUG).