web-dev-qa-db-ja.com

Java SpringBoot-ペイロードを使用した応答のログ記録

現在、SpringBootを使用してリクエスト/レスポンスロギングをRESTサービスに統合しています。リクエストには、Springが提供するCommonsRequestLoggingFilterを選択しました。

@Bean
public CommonsRequestLoggingFilter requestLoggingFilter() {
    CommonsRequestLoggingFilter loggingFilter = new CommonsRequestLoggingFilter();
    loggingFilter.setIncludeClientInfo(false);
    loggingFilter.setIncludeQueryString(true);
    loggingFilter.setIncludePayload(true);
    loggingFilter.setMaxPayloadLength(1024);

    return loggingFilter;
}

そして、構成ファイル内:

logging.level.org.springframework.web.filter.CommonsRequestLoggingFilter=DEBUG

しかし、応答については、対応するクラスがないようですか? Springでサーバーの応答をログに記録する同様の方法はありますか?

編集:具体的には、上記の設定で私が見るものは、BeforeRequestには何もありません:

2017-06-28 09:32:32.258 DEBUG 22872 --- [http-nio-8081-exec-2] o.s.w.f.CommonsRequestLoggingFilter      : Before request [uri=/someApp/someObject]

AfterRequestとしてのリクエストペイロード:

2017-06-28 09:32:32.272 DEBUG 22872 --- [http-nio-8081-exec-2] o.s.w.f.CommonsRequestLoggingFilter      : 
After request [uri=/someApp/someResource;payload={
  "someObject":   {
                    "lastName": "Doe",
                    "reference": "123456789"
              }
    }
]

そして、実際の応答はログのどこにもありません。

8

気にしないで、

結局、応答もログに記録できる独自のフィルターを実装することになりました。 GenericFilterBeanに基づいて、ストリームが閉じられないようにHttpResponseとHttpRequestをラップします。

Springがリクエストをログに記録するためのクラスを提供しているが、レスポンスのためには提供していないのは私にはまだ奇妙です...

2

アプリを監視および管理する必要がある場合は、 アクチュエータ の使用を検討してください。箱から出してリクエスト/レスポンスをログに記録する機能があります。

1
Mike Adamenko

application.propertiesで以下の行を設定して、要求/応答をログに記録することができます

logging.level.org.springframework.ws.server.MessageTracing.sent=TRACE
0
Amr Ahmed