java - Log4j AsyncAppender

标签 java log4j low-latency

我们有一个高速、大容量的应用程序,它正在使用 log4j。通常我们一直在使用 SyslogAppender,认为它是重量最轻、速度最快的附加程序。但是我们看到 SYSLOG 在高容量下的 CPU 使用率很高(因为 SYSLOG conf 中的过滤器规则)。

我们可能想切换到使用 FileAppender。问题是我们是否要将它与 log4j AsyncAppender 结合使用以消除由于刷新(强制)到磁盘而导致的任何暂停?

(该应用程序对延迟非常敏感,因此我们希望将附加程序可能添加的任何延迟最小化。)此外 - 我不确定 SyslogAppender 是否真的比 FileAppender 更快(但自从我开始以来就是这样).

如有任何想法,我们将不胜感激。

最佳答案

我肯定会使用 AsyncAppender。

我已经看到低延迟应用程序几乎停止使用标准文件附加程序。不可否认,他们在共享硬件和磁盘上使用 (OS)VM,因此一个 VM 可以独占磁盘 IO,并在尝试记录时让其他 VM 停止。

您还可以考虑记录到 JMS 和其他异步策略。

关于java - Log4j AsyncAppender,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7350847/

相关文章:

java - apache-camel 错误处理程序范围澄清

java - 在 JavaFX 中使用 CSS 时遇到问题

java - Log4j 单独的日志文件

java - 在运行时在 log4j.xml 中添加和删除记录器

Android:我可以降低 onTouch 的延迟吗?

java - 使用过滤器以编程方式设置 EditText 数字

java - 如何获取jar的运行情况?

log4j:WARN 无法识别的元素rollingPolicy

Java TCP/IP Socket 写入性能优化