2011-09-08 97 views
4

我們有一個使用log4j的高速大容量應用程序。通常我們一直在使用SyslogAppender,認爲它是最輕的,最快的appender。但是我們看到SYSLOG在高容量下的CPU利用率很高(因爲SYSLOG conf中的過濾規則)。Log4j AsyncAppender

我們可能想切換到使用FileAppender。問題是我們是否希望將這與log4j AsyncAppender一起使用,以消除由於刷新(強制)到磁盤造成的任何暫停? (這個應用程序對延遲非常敏感,所以我們希望最小化appender可能會添加的任何延遲。)另外 - 我不太確定SyslogAppender是否真的比FileAppender更快(不過,這是事情發生的方式,因爲我啓動)。

任何想法,將不勝感激。

回答

6

我肯定會使用AsyncAppender。

我見過一個低延遲的應用程序幾乎停止使用標準文件appender。無可否認,他們在共享硬件和磁盤上使用(OS)虛擬機,因此一個虛擬機可能獨佔磁盤IO,並在嘗試登錄時使其他虛擬機停機。

您也可以查看日誌記錄到JMS和其他異步策略。

+0

感謝您的評論。它似乎不會受傷,並可能會有所幫助。 –

+0

我們做了一堆基準測試,並且它似乎甚至使用異步appender變得更糟,與正常文件appender相比,使用immediateFlush = false。 –

+0

有關AsyncAppender問題,請參閱http://stackoverflow.com/a/13144054/603516。 – Vadzim