تحية ، أيها الأصدقاء الأعزاء!
اليوم ، أود أن أوضح مثالًا رائعًا على كيفية مساعدة Bobina في موقف شائع جدًا - تسجيل طلبات HTTP واستجاباتها في Spring Boot.
أكثر من ذلك! سنقوم بتسجيل رسائل HTTP فقط في ملفات منفصلة.
لذلك دعونا نذهب!
لتنشيط تسجيل HTTP في Spring Boot ، ما عليك سوى إضافة سطر إلى application.properties
:
logging.level.org.springframework.web=TRACE
لن يسمح مثل هذا التكوين بتسجيل نص طلب HTTP.
لتنشيط تسجيل نص طلب HTTP ، قم بإنشاء فئة تكوين:
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; } }
الآن ، دعونا ننشئ بكرة .
أضف التبعية إلى build.gradle
:
compile "io.infinite:bobbin:2.0.4"
أو في 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>
قم Bobbin.json
ملف 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.ConsoleDestination", "levels": "['warn', 'error'].contains(level)" } ] }
تتمثل إحدى الميزات الرئيسية لـ "Bobbin" في أنه يقسم بسهولة إخراج التسجيل إلى ملفات منفصلة بناءً على معايير مثل:
- مستوى الرسالة (
debug
، warn
، إلخ.) - اسم الدفق
- فئة واسم الحزمة
- إلخ
إذن لماذا يجب علينا البحث عن سجلات HTTP في الملفات التي تحتوي على سجلات أخرى؟
دعنا نوجه سجلات Spring Boot HTTP لفصل الملفات من أجل راحتنا!
أضف destination
جديدة إلى 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')" }
كما ترون ، نكتب سجلات من الفصول التي تحتوي على org.springframework.web
باسم الحزمة الخاصة بهم إلى دليل "SPRING_WEB"
!
سهل ، أليس كذلك؟
هذا ما يبدو عليه التكوين الكامل لـ 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)" } ] }
وهنا محتويات ملف السجل نفسه .\LOGS\SPRING_WEB\main\http-nio-8089-exec-1\debug\http-nio-8089-exec-1_debug_2019-03-22.log
: رابط إلى .\LOGS\SPRING_WEB\main\http-nio-8089-exec-1\debug\http-nio-8089-exec-1_debug_2019-03-22.log
، t .كلفن. الملف لديه خطوط طويلة
التسجيل لم يكن أبدا بهذه السهولة!
شكرا لاهتمامكم!