【发布时间】:2015-09-15 12:39:27
【问题描述】:
在 tomcat http 访问日志中,阀门需要一些时间才能写入文件。请注意,我有 org.apache.catalina.valves.AccessLogValve 的默认配置。有什么办法可以改善延迟吗?造成这种延迟的主要原因是什么
【问题讨论】:
标签: tomcat logging tomcat-valve
在 tomcat http 访问日志中,阀门需要一些时间才能写入文件。请注意,我有 org.apache.catalina.valves.AccessLogValve 的默认配置。有什么办法可以改善延迟吗?造成这种延迟的主要原因是什么
【问题讨论】:
标签: tomcat logging tomcat-valve
我找到了答案。 您可以通过禁用缓冲来改善延迟。标志“缓冲”确定日志记录是否将被缓冲。如果设置为 false,则每次请求后都会写入访问日志。默认值:真。因此,添加 BufferedLogs="false" 将减少写入日志文件的延迟。另一个属性是 backgroundProcessorDelay。如果未指定,则此属性的默认值为 10,表示延迟 10 秒。 因此,通过将其设置为较低的值,您可以改善将 http-access 日志写入文件的延迟。
【讨论】:
backgroundProcessorDelay="1" (tomcat.apache.org/tomcat-8.0-doc/config/engine.html) 在Host 标签中设置,或buffered="false" 在Valve 标签中设置,两者都在conf/server.xml 中。
主要原因是tomcat缓冲了日志信息。我们可以通过更改记录器的默认行为来禁用缓冲区。我们可以在 $TOMCAT_HOME/conf/server.xml
中找到
tomcat 版本:tomcat-7.0.61
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" buffered="false" pattern="%h %l %u %t "%r" %s %b" prefix="localhost_access_log." suffix=".txt"/>
通过将 buffered 属性设置为 false ,我们可以立即获取访问信息。 doc of AccessLogValve
【讨论】: