JBOSS Console Logging,在生产环境中推荐?

时间:2013-02-19 04:44:40

标签: java logging jboss

我一直在寻找答案。在我工作的公司中,我们有一个高度并发的系统,但最近发现Web服务器(Jboss)的日志记录配置包括Console appender。应用程序记录器也将进入控制台。我们开始在日志记录操作上遇到死锁,其中大多数是控制台appender(我知道Log4j有一个非常讨厌的sincronization错误,但我几乎可以肯定我们在相关代码中没有任何sincronization方法)。另一件事是,IT人员定期使用腻子控制台访问控制台,暂停检查日志,然后关闭腻子窗口。

控制台appender以及在生产环境中使用控制台进行日志记录和监视是否可能导致系统出现死锁和竞争条件?我的理解是控制台应该只在IDE的开发阶段使用,因为在高度并发的系统上,它将是另一种资源(因为无缓冲的I / O而变慢)受竞争条件的影响。

感谢。

1 个答案:

答案 0 :(得分:3)

来自Best practices for Performance tuning JBoss Enterprise Application Platform 5,第9页

  

关闭生产中的控制台日志记录

     

调低记录详细程度

     

使用异步日志记录。

     

使用If(debugEnabled())

包装调试日志语句

由于Log4J中的一个错误会在记录之前计算要记录的内容,因此如果MyClass#toString()是一个繁重的操作,我会强烈推荐生产中的第一个和最后一个注意事项,Log4J将首先计算此String之前(是的,它将执行繁重的操作)然后它将检查是否必须记录此String(非常糟糕,确实=)。

另外,告诉IT人员在检查日志文件时使用less命令以便不阻止文件,不要直接检查控制台=。此命令在Linux中有效,如果您的服务器在Unix环境中,命令将为tail(基于@Toni的评论)。


IMO,我认为正式的JBoss性能指南是停止在生产中使用控制台日志记录的最好证明(即使这仍然不能证明你的死锁问题)。