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 が呼び出されます。このメカニズムは、前処理の側面の広いフィールド、またはロケールやテーマの変更などの一般的なハンドラーの動作に使用できます。その主な目的は、反復的なハンドラーコードを分離できるようにすることです。

あかさたなあかさたな

https://spring.pleiades.io/spring-boot/reference/features/logging.html

Spring Boot は、すべての内部ロギングに Commons Logging [Apache] (英語) を使用しますが、基礎となるログ実装はオープンなままです。Java Util Logging (標準 Javadoc) 、Log4j2 [Apache] (英語) 、Logback (英語) のデフォルト構成が提供されています。いずれの場合も、ロガーはコンソール出力を使用するように事前設定されており、オプションのファイル出力も利用できます

あかさたなあかさたな

https://qiita.com/Qui/items/40077ce9e33738dd3914

  • logger : ログを出力するオブジェクト
  • handler : ログの出力先を制御するオブジェクト
  • formatter : ログのフォーマットを制御するオブジェクト

loggerにhandlerとformatterを登録する

logger.addHandler(handler);
logger.setFormatter(formatter);

ログを出力は↓みたいなかんじ

logger.log(Level.INFO, "メッセージ");