如何确保配置的JBOSS EAP 6.2 <async-handler>日志记录处理程序?

时间:2015-05-05 12:04:33

标签: asynchronous logging jboss jboss-eap-6

我在我的项目中使用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>,由于尺寸轮换,我仍然面临着记录延迟。

我的问题是:

  • 如何确保使用已配置的JBOSS EAP 6.2日志记录句柄?
  • 还有其他方法可以减少JBoss的日志记录延迟吗?

1 个答案:

答案 0 :(得分:0)

您的记录器应委托给您的Async处理程序,然后该处理程序将委派给您的旋转文件处理程序。所以请改为:

<logger category="org.activiti" use-parent-handlers="false">
<level name="DEBUG"/>
<handlers>
    <handler name="Async_ACTHANDLER"/>
</handlers>

您也可以在旋转文件处理程序中关闭autoflush。