我有自己的日志记录引擎,它将日志写入带有阻塞队列的单独线程。为了使用“标准软件”,我正在考虑切换到log4j。
我不希望我的高度并发软件被日志命令放慢速度,这些日志命令会将所有内容写入磁盘,就像调用命令一样。可以将log4j用作垃圾箱吗?
答案 0 :(得分:7)
Log4j是大多数JavaEE应用服务器上的日志记录实现,所以这是它的并发能力的一个很好的广告。
话虽如此,我在高负载条件下看到了Log4j 1.2死锁。一些调查突出显示了源代码中一些非常糟糕的同步。显然,这已经在Log4j 1.3中得到了修复,尽管开发速度已经放慢或完全停止了 - 我觉得很多源代码都是无法实现的。
但是,如果您可以自由选择,那么您应该考虑使用Logback,这是Log4j的精神继承者。这是一个彻底的重新设计,对你来说可能是一个更好的选择。
答案 1 :(得分:3)
查看log4j的asynchronous appender,它缓冲日志消息,ad使用单独的线程将它们传递给appender。可能是您认为log4j async appender不合适(here are some complaints about it),您可以随时创建自己的appender。