一尘不染

从tomcat 7中的访问日志中过滤出image / css / js请求

tomcat

我正在尝试从访问日志中过滤掉任何image / css /
js请求。我创建了一个过滤器(LoggingFilter),并在server.xml中设置了conditionUnless属性,但由于缺少对image /
css / js文件的请求,因此我必须错过一个步骤。有人可以提示我我所缺少的吗?

这是代码-

LoggingFilter.java

public class LoggingFilter implements Filter 
{

@Override 
public void init(FilterConfig filterConfig) throws ServletException 
{

}

@Override 
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException 
{ 
    chain.doFilter(request, response); 
    if(response.getContentType() != null) 
    { 
        if (response.getContentType().contains("image") || 
                response.getContentType().contains("css") || 
                response.getContentType().contains("javascript")) 
        { 
            request.setAttribute("doNotLog", "noLog"); 
        } 
    } 
}

@Override 
public void destroy() 
{

} 
}

这是我在web.xml中的内容

<filter>
     <filter-name>LoggingFilter</filter-name>
     <filter-class>com.shop.famos.filters.LoggingFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>LoggingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

在tomcat设置中,我有-

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" conditionUnless="doNotLog" pattern="common"/>

顺便说一句,我正在使用tomcat 7


阅读 348

收藏
2020-06-16

共1个答案

一尘不染

终于找出了我所缺少的步骤。我从亚马逊的“ Apache Tomcat
7”中选了一本好书,这使我意识到Tomcat拥有自己的内置过滤器,可以用来检查和修改传入的请求。最初,我将过滤器作为我的Web项目的一部分,但这没有用,因为我的过滤器需要在服务器级别,这样访问日志才能看到我设置的请求属性。

因此,基本上,我将编译后的类放在一个jar中,并将其放在Tomcat的类路径中,将我的过滤器定义和映射放在Tomcat的web.xml文件中,重新启动Tomcat并转到我网站的主页,并确保对js的请求足够多,图像或CSS文件未最终出现在日志中。

2020-06-16