2017-06-27 14 views
1

現在、Springブートを使用してRESTサービスにリクエスト/レスポンスのログを統合しています。Java Springブート - ペイロードによるロギング応答

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

    return loggingFilter; 
} 

およびコンフィギュレーションファイルに:要求の場合、私は春が提供するようCommonsRequestLoggingFilterを選んだreponsesするため

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

、しかし、何も対応するクラスがないように思えますか? Springでサーバーレスポンスを記録するのと同様の方法はありますか?

EDIT:AfterRequestとして

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

要求ペイロード:私は上記のセットアップで見るもの Specicallyは、BeforeRequestで何もありません

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

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

答えて

2

CommonsRequestLoggingFilterはAbstractRequestLoggingFilter

のサブクラスで要求が処理される前と後の

AbstractRequestLoggingFilterはログイン操作を行うフィルタの基本クラスです。

したがって、CommonsRequestLoggingFilterはすでに応答をログに記録できます。方法を参照afterRequest

ところで、あなたのアプリケーションを監視し、管理する必要がある場合は、actuatorを使用することを検討してください。リクエスト/レスポンスをボックスの外に記録する機能があります。

+0

...春が応答をロギング要求のためのクラスを提供しますが、ないように私にはまだ奇妙です。これを正しく動作させるための指針はどれですか?私は現在、 "AfterRequest"エントリとしてログに記録されたペイロードでリクエストを確認し、レスポンスはどこにも見つかりません。 –

0

ネヴァーマインド、

私は同様の応答を記録することができます私自身のフィルタを実装することになりました。 GenericFilterBeanに基づいて、HttpResponseとHttpRequestをラップするので、ストリームは閉じられません。

それは私が見

+2

実装したLoggingFilterのコードを投稿すると、非常に便利です。 –

関連する問題