并发log4j

我有自己的日志引擎,它将日志写入带有阻塞队列的单独线程。 为了使用“标准软件”,我正在考虑切换到log4j。

我不希望我的高度并发软件被日志命令放慢速度,这些日志命令将所有内容写入磁盘,就像调用命令一样。 可以将log4j用作垃圾箱吗?

Log4j是大多数JavaEE应用服务器上的日志记录实现,所以这是它的并发能力的一个很好的广告。

话虽如此,我在高负载条件下看到了Log4j 1.2死锁。 一些调查突出显示了源代码中一些非常糟糕的同步。 显然,这已经在Log4j 1.3中得到了修复,尽管开发速度已经放慢或完全停止了 – 我感觉很多来源都是不可救药的。

但是,如果您可以自由选择,那么您应该考虑使用Logback ,它是Log4j的精神inheritance者。 这是一个全新的重新设计,对你来说可能是一个更好的选择。

查看log4j的异步appender ,它缓冲日志消息ad使用单独的线程将它们传递给appender。 可能是你认为log4j async appender不合适(这里有一些关于它的抱怨) ,你总是可以自己做一个appender。