2016-11-17 43 views
1

的Tomcat 7的条目不能写入访问日志,并抛出以下异常。异常试图添加到访问日志

Nov 17, 2016 5:10:37 PM org.apache.catalina.connector.CoyoteAdapter log 
WARNING: Exception while attempting to add an entry to the access log 
java.lang.NullPointerException 
     at org.apache.catalina.connector.CoyoteAdapter.log(CoyoteAdapter.java:555) 
     at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:182) 
     at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611) 
     at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:314) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
     at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
     at java.lang.Thread.run(Thread.java:745) 

如何解决这个问题?

回答

0

这是Tomcat的一个已知的问题,其固定在Tomcat的8.0.29。升级Tomcat应该可以解决这个问题。 https://bz.apache.org/bugzilla/show_bug.cgi?id=58578

其他方法是修改访问日志记录模式不包括cookie。在server.xml中

pattern="%t %H request:%{SESSIONID}r %m %U %s %q %r" 

,而不是

pattern="%t %H cookie:%{SESSIONID}c request:%{SESSIONID}r %m %U %s %q %r" 

:使用这样的事情。

<!-- Access log processes all example. 
     Documentation at: /docs/config/valve.html 
     Note: The pattern used is equivalent to using pattern="common" --> 
    <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" /> 

    </Host> 
</Engine>