Open11
spring bootログ出力
HandlerInterceptorを実装してInterceptorクラスを作成する。
HandlerInterceptorはカスタマイズされたハンドラー実行チェーンを可能にするインターフェース。
HandlerInterceptorの持つメソッド
boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
void postHandle(HttpServletRequest request, HttpServletReponse response, Object handler, ModelAndView modelAndView)
void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
- preHandle: コントローラーの実行前の処理を定義。戻り値がtrueであればコントローラーの処理を実行、falseであればコントローラーの処理は実行しないで、200のレスポンスを返す。
- postHandle: コントローラーの実行後の処理を定義。MVCの場合はテンプレートエンジンによるレンダリング前、REST APIの場合はレスポンス送信前。コントローラーで例外が投げられたときは実行されない。modelAndViewはMVCの場合に設定したModelとViewの情報が設定される。
- afterCompletion: クライアントへレスポンスを送信した後の処理を定義。exはレンダリングで発生した例外が設定される。
handlerはリクエストに紐づくコントローラーメソッドに該当する。
以下でメソッドの情報を取得可能。
Method method = ((HandlerMethod) handler).getMethod();
適切な HandlerAdapter がハンドラー自体の実行をトリガーする前に、HandlerInterceptor が呼び出されます。このメカニズムは、前処理の側面の広いフィールド、またはロケールやテーマの変更などの一般的なハンドラーの動作に使用できます。その主な目的は、反復的なハンドラーコードを分離できるようにすることです。
Spring Boot は、すべての内部ロギングに Commons Logging [Apache] (英語) を使用しますが、基礎となるログ実装はオープンなままです。Java Util Logging (標準 Javadoc) 、Log4j2 [Apache] (英語) 、Logback (英語) のデフォルト構成が提供されています。いずれの場合も、ロガーはコンソール出力を使用するように事前設定されており、オプションのファイル出力も利用できます
- logger : ログを出力するオブジェクト
- handler : ログの出力先を制御するオブジェクト
- formatter : ログのフォーマットを制御するオブジェクト
loggerにhandlerとformatterを登録する
logger.addHandler(handler);
logger.setFormatter(formatter);
ログを出力は↓みたいなかんじ
logger.log(Level.INFO, "メッセージ");