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で指定したカテゴリに対し有効になる。