日志記錄Filter


Filter也可以日志記錄,在request 之前后, 該filter 使用Apache 日只記錄工具,記錄客戶IP ,訪問URI 以及消耗時間。

LogFilter.java

package com.helloweenvsfei.filter;

import java.io.IOException;

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 javax.servlet.http.HttpServletResponse;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

public class LogFilter implements Filter {

    private Log log = LogFactory.getLog(this.getClass());

    private String filterName;

    public void init(FilterConfig config) throws ServletException {

        // 獲取 Filter 的 name,配置在 web.xml 中
        filterName = config.getFilterName();

        log.info("啟動 Filter: " + filterName);

    }

    public void doFilter(ServletRequest req, ServletResponse res,
            FilterChain chain) throws IOException, ServletException {

        HttpServletRequest request = (HttpServletRequest) req;
        HttpServletResponse response = (HttpServletResponse) res;

        long startTime = System.currentTimeMillis();
        String requestURI = request.getRequestURI();

        requestURI = request.getQueryString() == null ? requestURI
                : (requestURI + "?" + request.getQueryString());

        chain.doFilter(request, response);

        long endTime = System.currentTimeMillis();

        log.info(request.getRemoteAddr() + " 訪問了 " + requestURI + ", 總用時 "
                + (endTime - startTime) + " 毫秒。");

    }

    public void destroy() {
        log.info("關閉 Filter: " + filterName);
    }

}

log4j.properties   使用jar log4j.jar 和 commons-logging.jar

可參考

commmons_logging 和 log4j 之日志筆記一

log4j.rootLogger=INFO, A1

log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH\:mm\:ss,SSS} [%l]-[%p] %m%n

web.xml

<filter>
    <filter-name>logFilter</filter-name>
    <filter-class>com.helloweenvsfei.filter.LogFilter</filter-class>
</filter>

<filter-mapping>
    <filter-name>logFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

如不需要日志Filter ,可把web.xml 相應注釋掉即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM