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 "%r" %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