Tomcat HTTP Access日志在写入文件时有延迟

时间:2015-06-29 06:27:28

标签: tomcat logging tomcat-valve

在tomcat中,http访问日志阀需要一些时间来写入文件。请注意我有org.apache.catalina.valves.AccessLogValve的默认配置。有没有改善延迟?这种延迟的主要原因是什么

2 个答案:

答案 0 :(得分:4)

我找到了答案。 您可以通过禁用缓冲来改善延迟。 Flag"缓冲"确定是否将缓冲日志记录。如果设置为false,则将在每次请求后写入访问日志记录。默认值:true。因此,添加BufferedLogs =" false"将减少写入日志文件的延迟。另一个属性是backgroundProcessorDelay。如果未指定,则此属性的默认值为10,表示延迟10秒。 因此,通过将其设置为较低的值,可以改善将http访问日志写入文件的延迟。

答案 1 :(得分:1)

主要原因是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 &quot;%r&quot; %s %b" prefix="localhost_access_log." suffix=".txt"/>

通过将buffered属性设置为false,我们可以立即获取访问信息。 doc of AccessLogValve