我在我的项目中使用JBoss EAP 6.2应用程序服务器。我们通过配置记录器,处理程序和格式化程序来使用默认的JBoss Logging子系统,如下所示:
<size-rotating-file-handler name="ACTHANDLER" autoflush="true">
<level name="DEBUG"/>
<formatter>
<pattern-formatter pattern="%d %-8p (%-40t) %s%E [%c] %n"/>
</formatter>
<file relative-to="jboss.server.log.dir" path="activiti.log"/>
<rotate-size value="20m"/>
<max-backup-index value="10"/>
<append value="true"/>
</size-rotating-file-handler>
<logger category="org.activiti" use-parent-handlers="false">
<level name="DEBUG"/>
<handlers>
<handler name="ACTHANDLER"/>
</handlers>
</logger>
由于连续记录消息,大小轮换发生很多,因此记录延迟增加。因此,我们会遇到性能下降。
我研究了JBoss EAP 6.2中的<async-handler>
选项,并用它来减少日志记录延迟,如下所示:
<async-handler name="Async_ACTHANDLER">
<level name="ERROR"/>
<queue-length value="1024"/>
<overflow-action value="discard"/>
<subhandlers>
<handler name="ACTHANDLER"/>
</subhandlers>
</async-handler>
即使使用此<async-handler>
,由于尺寸轮换,我仍然面临着记录延迟。
我的问题是:
答案 0 :(得分:0)
您的记录器应委托给您的Async处理程序,然后该处理程序将委派给您的旋转文件处理程序。所以请改为:
<logger category="org.activiti" use-parent-handlers="false">
<level name="DEBUG"/>
<handlers>
<handler name="Async_ACTHANDLER"/>
</handlers>
您也可以在旋转文件处理程序中关闭autoflush。