Develop with pleasure!

福岡でCloudとかBlockchainとか。

エラーログの捕捉

Struts2では、ExceptionMappingInterceptorで例外発生時に発生した例外により遷移先を制御可能だが、このExceptionMappingInterceptorで捕捉した例外の情報をログ出力することもできる。

ExceptionMappingInterceptorのソースを見れば明らかだが、

protected boolean logEnabled;
protected String logCategory, logLevel;

といったプロパティを保持している。デフォルトでlogEnabledはfalseになっているため、例外情報はログ出力されない。そのため、ログ出力機能を有効にするため、これらのプロパティをstruts.xmlで設定し、ExceptionMappingInterceptorにインジェクションしてあげる。

<interceptor name="handleExceptionLog" class="com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor">
    <param name="logEnabled">true</param>
    <param name="logLevel">error</param>
    <param name="logCategory">任意のカテゴリ名</param>
</interceptor>

後はこのインターセプターをinterceptor-stackに含めれば良い。インターセプターのnameを"exception"としてデフォルトの定義を上書きするのも可能だろう。

上記設定で、ログ出力が有効になり、errorレベルのログがlogCategoryで指定したカテゴリに対し有効になる。