zoukankan      html  css  js  c++  java
  • 日志记录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 相应注释掉即可。

  • 相关阅读:
    111
    ZeroClipBoard 复制粘贴插件
    三、新增临时素材
    二、获取AccessToken
    一、微信公众平台的接入微信公众平台的接入
    Jquery.validate的使用
    尝试解决IIS问题一些方法
    匿名类和匿名方法
    泛型类的认知
    发布支持mysql8.0的writer和reader
  • 原文地址:https://www.cnblogs.com/zhaideyou/p/5914888.html
Copyright © 2011-2022 走看看