今回はWildFlyに特化してません。
Webアプリケーションでユーザーからのリクエスト単位にSTART-ENDでログを出してレスポンスタイムを集計したりするような要件は多いです。
前回作ったSpringMVCの環境でログが出るようにしてみました。
フィルターの作成
ログを出すためにFilterを作成します。
package com.tsu2t.spring8test.filter;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class LogFilter implements Filter {
private static Log logger = LogFactory.getLog(LogFilter.class);
public void init(FilterConfig config) throws ServletException {
}
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest)req;
String uri = request.getRequestURI();
logger.info(uri + " BEGIN");
chain.doFilter(req, res);
logger.info(uri + " END");
}
public void destroy() {
}
}
このFilterが呼ばれるとchain.doFilterで下の処理に渡す前後でログを出しています。
Filter登録
リクエスト毎にこのFilterが呼ばれるようにweb.xmlに下記を追記します。
<filter>
<filter-name>logFilter</filter-name>
<filter-class>
com.tsu2t.spring8test.filter.LogFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>logFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
今回は以上です。特にはまりポイントもなく簡単でした。