現在、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"
}
}
]
そして、実際の応答はログのどこにもありません。
気にしないで、
結局、応答もログに記録できる独自のフィルターを実装することになりました。 GenericFilterBeanに基づいて、ストリームが閉じられないようにHttpResponseとHttpRequestをラップします。
Springがリクエストをログに記録するためのクラスを提供しているが、レスポンスのためには提供していないのは私にはまだ奇妙です...
アプリを監視および管理する必要がある場合は、 アクチュエータ の使用を検討してください。箱から出してリクエスト/レスポンスをログに記録する機能があります。
application.propertiesで以下の行を設定して、要求/応答をログに記録することができます
logging.level.org.springframework.ws.server.MessageTracing.sent=TRACE