Bobbinsを使用したSpring BootでのHTTP要求のログ記録

親愛なる友人、ご挨拶!







今日、私は非常に一般的な状況でSpring BootでHTTPリクエストとレスポンスを記録するボビナがどのように役立つかの素晴らしい例を示したいと思います。







さらに! HTTPメッセージは個別のファイルにのみ記録します。







さあ、行こう!







Spring BootでHTTPロギングを有効にするには、 application.properties



次の行を追加し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; } }
      
      





それでは、 Bobbinをセットアップしましょう。







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



ファイルを作成します。







 { "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)" } ] }
      
      





「ボビン」の主な機能の1つは、ログ出力を次のような基準に基づいて個別のファイルに簡単に分割できることです。









では、なぜ他のログを含むファイルでHTTPログを探す必要がありますか?







便宜上、Spring Boot HTTPログを個別のファイルに転送しましょう!







Bobbin.json



新しい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"



ディレクトリに"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



github.comへのリンク、t .k。 ファイルに長い行があります







ロギングはかつてないほど簡単になりました!







ご清聴ありがとうございました!








All Articles