Am Montag, den 16.09.2013, 10:01 +0200 schrieb Cédric Couralet:
> Hi,
> 
> I'm also interested in a method to filter those OPTIONS.
> With the same setup, I basically created my own AccessLogValve wich
> does the filtering, something like :
> 
> /**
>      * Don't log request when HTTP Method is one of the exclude List
>      */
>     @Override
>     public void log(Request request, Response response, long time) {
> 
>         if (Arrays.asList(exclude.split(",")).contains(request.getMethod())) {
>             return;
>         }
> 
>         super.log(request, response, time);
>     }
> 
> But there must be something better.
If you look at the documentation fot the AccessLogValve
(http://tomcat.apache.org/tomcat-7.0-doc/config/valve.html#Access_Log_Valve) 
you will find three config-parameters "conditionIf", "conditionUnless" and the 
old one "condition".

In your case you could set "conditionUnless" to "junk" and use a filter
to mark every request you don't want to log by setting an attribute
"junk" to a non-null value on that request.

In your Filter-class you would then implement the doFilter method
something like this

public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
    if (request instanceof HttpServletRequest) {
       HttpServletRequest httpRequest = (HttpServletRequest) request;
       if ("OPTIONS".equals(httpRequest.getMethod())) {
           request.setAttribute("junk", true);
       }
    }
    chain.doFilter(request, response);
}

You would probably check for the remoteIp, too, to be sure to only
exclude the HAProxy requests from your log-files.

Regards
 Felix

> 
> 
> 2013/9/16 Jim Barber <jim.bar...@ddihealth.com>:
> > Hi all.
> >
> > I'm hoping someone on this list can help me since I've been reading docs,
> > mailing lists, FAQs, and so on for hours now, and I'm not having much luck
> > finding an answer to my question.
> >
> > I am using Tomcat version 7.0.42 as packaged in Debian Linux.
> > In front of my Tomcat servers, I am using haproxy for load balancing.
> > The haproxy load balancers are using the HTTP OPTIONS request method to
> > check
> > if the Tomcat servers are alive and healthy.
> >
> > This results in log entries like the following in the Tomcat accesslog file:
> >
> > 10.122.32.4 - - [16/Sep/2013:17:12:49 +1000] "OPTIONS / HTTP/1.0" 200 -
> > 10.122.32.4 - - [16/Sep/2013:17:12:51 +1000] "OPTIONS / HTTP/1.0" 200 -
> > 10.122.32.4 - - [16/Sep/2013:17:12:53 +1000] "OPTIONS / HTTP/1.0" 200 -
> > 10.122.32.4 - - [16/Sep/2013:17:12:55 +1000] "OPTIONS / HTTP/1.0" 200 -
> > 10.122.32.4 - - [16/Sep/2013:17:12:57 +1000] "OPTIONS / HTTP/1.0" 200 -
> > 10.122.32.4 - - [16/Sep/2013:17:12:59 +1000] "OPTIONS / HTTP/1.0" 200 -
> > 10.122.32.4 - - [16/Sep/2013:17:13:01 +1000] "OPTIONS / HTTP/1.0" 200 -
> > 10.122.32.4 - - [16/Sep/2013:17:13:03 +1000] "OPTIONS / HTTP/1.0" 200 -
> > 10.122.32.4 - - [16/Sep/2013:17:13:05 +1000] "OPTIONS / HTTP/1.0" 200 -
> > 10.122.32.4 - - [16/Sep/2013:17:13:07 +1000] "OPTIONS / HTTP/1.0" 200 -
> > 10.122.32.4 - - [16/Sep/2013:17:13:09 +1000] "OPTIONS / HTTP/1.0" 200 -
> > 10.122.32.4 - - [16/Sep/2013:17:13:11 +1000] "OPTIONS / HTTP/1.0" 200 -
> >
> > At the moment I'm getting one of these every 2seconds, but I haven't enabled
> > the second load balancer for HA purposes yet.
> > When I do that, I'll be getting twice as many hits of this type.
> >
> > This is going to result in rather large log files full of noise that I'm not
> > interested in.
> > I've been trying to work out how to filter these out.
> > Basically I don't want to log anything that is using the HTTP OPTIONS
> > Request
> > Method, but still want to log anything else that Tomcat usually logs.
> >
> > I have a feeling it will come down to modifying the following entry in the
> > /etc/tomcat7/server.xml file:
> >
> > <Valve className="org.apache.catalina.valves.AccessLogValve"
> > directory="logs"
> >        prefix="localhost_access_log." suffix=".txt"
> >        pattern="%h %l %u %t &quot;%r&quot; %s %b" />
> >
> > Specifically adding the condition="<VALUE>" attribute, but I have no idea
> > what to set
> > <VALUE> to.
> > The docs say that if ServletRequest.getAttribute(<VALUE>) returns null for
> > the
> > attribute defined in condition, then the item will be logged.
> > Is there an ServletRequest attribute that is null when the http request
> > method
> > is not using "OPTIONS"?
> >
> > Or am I completely off track and there is a different way to filter these
> > access log messages?
> >
> > Regards,
> >
> > --
> > Jim Barber
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
> > For additional commands, e-mail: users-h...@tomcat.apache.org
> >
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
> For additional commands, e-mail: users-h...@tomcat.apache.org
> 



---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

Reply via email to