tomcat - 同一台机器上的两个 Tomcat 实例使用相同的日志文件

标签 tomcat log4j

我最近遇到了一个问题,我的日志文件没有像我的 log4j 配置中定义的那样滚动。我发现罪魁祸首是我有两个运行相同应用程序的 Tomcat 实例,它们都拥有相同的日志文件,所以没有一个可以因为另一个而将其滚动。

不过,我还是想使用同一个日志文件。我使用两个实例进行负载平衡,每个实例都有一个日志文件会很烦人。

有什么办法可以做到这一点吗?还是我注定要拥有多个日志文件?

最佳答案

建议为多个应用程序使用相同日志文件。因为,

  • 阅读日志文件会很困难。
  • 它会影响性能

但是,您可以通过使用“prudent”来实现此目的' 来自 logback 的标志如下。

<appender name="FILE_PRUDENT" class="ch.qos.logback.core.FileAppender">
    <file>logs/test.log</file>
    <prudent>true</prudent>
</appender>

来自官方文档,

In prudent mode, FileAppender will safely write to the specified file, even in the presence of other FileAppender instances running in different JVMs, potentially running on different hosts. The default value for prudent mode is false.

关于tomcat - 同一台机器上的两个 Tomcat 实例使用相同的日志文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42836175/

相关文章:

java - 是否可以在 Tomcat 中动态重新加载 log4j.xml/log4j.properties 文件?

tomcat - 在哪里启用cors?

java - log4j 附加程序优先级冲突?

log4j - 将我的自定义中介器与 WSO2 ESB log4j 集成

java - Log4j警告: no appenders found even if it is there

java - 带有 tomcat 连接池和 oracle 数据源配置的 Spring Boot 2?

eclipse - 从另一台计算机访问在 Eclipse 中运行的 Tomcat 8?

java - 将 slf4j 与 c3p0 和 Hibernate 一起使用

tomcat - Openshift Tomcat 7 (JBoss EWS 2.0) 卡带、WAR 文件、Websockets

java - 将日志记录添加到实用程序包