Salam, teman-teman terkasih!
Hari ini saya ingin menunjukkan contoh hebat tentang bagaimana Bobina dapat membantu dalam situasi yang sangat umum - mencatat permintaan dan respons HTTP di Spring Boot.
Bahkan lebih! Kami hanya akan mencatat pesan HTTP di file terpisah.
Jadi ayo pergi!
Untuk mengaktifkan logging HTTP di Spring Boot, cukup tambahkan baris ke application.properties
:
logging.level.org.springframework.web=TRACE
Konfigurasi seperti itu masih tidak akan membiarkan badan permintaan HTTP untuk dicatat.
Untuk mengaktifkan pembuatan log isi permintaan HTTP, buat kelas konfigurasi:
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.filter.CommonsRequestLoggingFilter; import org.springframework.web.servlet.config.annotation.ContentNegotiationConfigurer; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @Configuration public class WebMvcConfiguration implements WebMvcConfigurer { @Bean public CommonsRequestLoggingFilter logFilter() { CommonsRequestLoggingFilter filter = new CommonsRequestLoggingFilter(); filter.setIncludeQueryString(true); filter.setIncludePayload(true); filter.setMaxPayloadLength(100000); filter.setIncludeHeaders(false); filter.setAfterMessagePrefix("REQUEST DATA : "); return filter; } }
Sekarang, mari kita atur Bobbin .
Tambahkan dependensi ke build.gradle
:
compile "io.infinite:bobbin:2.0.4"
Atau di pom.xml
:
<dependency> <groupId>org.codehaus.groovy</groupId> <artifactId>groovy-all</artifactId> <version>2.5.6</version> <type>pom</type> </dependency> <dependency> <groupId>io.infinite</groupId> <artifactId>bobbin</artifactId> <version>2.0.4</version> </dependency>
Buat file Bobbin.json
di direktori sumber daya atau di direktori kerja aplikasi:
{ "levels": "['debug', 'info', 'warn', 'error'].contains(level)", "destinations": [ { "name": "io.infinite.bobbin.destinations.FileDestination", "properties": { "fileName": "\"./LOGS/THREADS/${threadGroupName}/${threadName}/${level}/${threadName}_${level}_${date}.log\"" }, "classes": "className.contains('io.infinite.')" }, { "name": "io.infinite.bobbin.destinations.FileDestination", "properties": { "fileName": "\"./LOGS/ALL/WARNINGS_AND_ERRORS_${date}.log\"" }, "levels": "['warn', 'error'].contains(level)" }, { "name": "io.infinite.bobbin.destinations.ConsoleDestination", "levels": "['warn', 'error'].contains(level)" } ] }
Salah satu fitur utama "Bobbin" adalah ia dengan mudah membagi hasil logging menjadi file terpisah berdasarkan kriteria seperti:
- Tingkat Pesan (
debug
, warn
, dll.) - Nama aliran
- Nama kelas dan paket
- dll.
Jadi mengapa kita harus repot mencari log HTTP kita dalam file yang berisi log lain?
Mari kita mengarahkan log Spring Boot HTTP ke file yang terpisah untuk kenyamanan kita!
Tambahkan destination
baru ke Bobbin.json
:
{ "name": "io.infinite.bobbin.destinations.FileDestination", "properties": { "fileName": "\"./LOGS/SPRING_WEB/${threadGroupName}/${threadName}/${level}/${threadName}_${level}_${date}.log\"" }, "classes": "className.contains('org.springframework.web')" }
Seperti yang Anda lihat, kami menulis log dari kelas yang berisi org.springframework.web
dalam nama paket mereka ke direktori "SPRING_WEB"
!
Mudah kan?
Seperti inilah konfigurasi lengkap Bobbin.json
:
{ "levels": "['debug', 'info', 'warn', 'error'].contains(level)", "destinations": [ { "name": "io.infinite.bobbin.destinations.FileDestination", "properties": { "fileName": "\"./LOGS/THREADS/${threadGroupName}/${threadName}/${level}/${threadName}_${level}_${date}.log\"" }, "classes": "className.contains('io.infinite.')" }, { "name": "io.infinite.bobbin.destinations.FileDestination", "properties": { "fileName": "\"./LOGS/ALL/WARNINGS_AND_ERRORS_${date}.log\"" }, "levels": "['warn', 'error'].contains(level)" }, { "name": "io.infinite.bobbin.destinations.FileDestination", "properties": { "fileName": "\"./LOGS/SPRING_WEB/${threadGroupName}/${threadName}/${level}/${threadName}_${level}_${date}.log\"" }, "classes": "className.contains('org.springframework.web')" }, { "name": "io.infinite.bobbin.destinations.ConsoleDestination", "levels": "['warn', 'error'].contains(level)" } ] }
Dan di sini adalah isi dari file log itu sendiri .\LOGS\SPRING_WEB\main\http-nio-8089-exec-1\debug\http-nio-8089-exec-1_debug_2019-03-22.log
: Tautan ke github.com, t .k. file memiliki garis panjang
Penebangan tidak pernah semudah ini!
Terima kasih atas perhatian anda!