Log4j vs Logback:并发写入同一个日志?

Sha*_*yan 17 java logging log4j web-applications logback

我有几个在同一个tomcat上运行的Web应用程序.

我有两个问题:

1-通过搜索,我了解到当存在多个应用程序时,登录同一文件可能会出现一些问题.这是在同一个Web服务器上运行的多个应用程序的情况吗?当使用默认的stdout输出时,这也是正确的吗?

2-在Logback库中有一个谨慎的模式:

在谨慎模式下,即使存在可能在不同主机上运行的不同JVM中运行的其他FileAppender实例,FileAppender也会安全地写入指定文件.prudent模式的默认值为false.

我想知道使用Logback是否仅适用于多个JVM,还是对同一Web服务器上运行的多个应用程序也有利?如果没有,这方面的log4j是否相同?

谢谢

Cek*_*eki 18

在log4j和logback中,如果多个FileAppender实例写入同一个日志文件,则所述日志文件损坏的风险很高.在是否FileAppender实例在同一个JVM还是不同的JVM上运行是无关紧要的,即腐败的风险是一样的.

正如文档中所提到的,在谨慎模式下FileAppender,即使存在FileAppender可能在不同主机上运行的相同或不同JVM中运行的其他实例,logback 也可以避免损坏.默认情况下,禁用谨慎模式.

控制台不能被破坏所以问题没有实际意义.


Teh*_*ppo 1

  1. 是的。一般来说,您的原则应该是为每个应用程序(Web 或非 Web)编写不同的日志文件。另一种方法是让服务器来决定要写入的文件。JBoss 有一般注销的方法,这些方法将转到同一个文件。不过,我仍然更喜欢为每个应用程序都有一个单独的日志。
  2. 据我所知,log4j 和 Logback 的目标都是最小化它们可能导致应用程序的开销,因此不太可能有一个更有利。如果多个 JVM 对您来说至关重要,我相信 Logback 更适合处理它,但在这之外使用它并不是一个坏主意。