当前位置: 首页 > 面试题库 >

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

郑晨
2023-03-14
问题内容

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

但是,我仍然想使用相同的日志文件。我使用两个实例进行负载平衡,每个实例都有一个日志文件会很烦人。

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


问题答案:

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

  • 很难 读取 日志文件。
  • 这将影响 性能

但是,您可以通过以下方式从登录中使用“
prudent ”标志来实现此目的。

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

根据官方文档,

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



 类似资料:
  • 以下是我的java logback配置: 我想在这里做的是:我有两个日志追加器:一个用于控制台,另一个用于日志文件;但是对于相同的java软件包(例如:组织.apache.zookeeper),我想使用两个不同的日志级别,INFO用于文件追加器和错误用于康多尔;但是我的日志配置优势无法正常工作。任何人都可以找出我的错误或一些解决方案吗?

  • 我们有两个不同的ASP.NET应用程序启用了Log4net日志记录。它们都有相同的log4net1.2.10.0版本。

  • 我在Ubuntu 18.04上下载了两个版本的neo4j-community-3.5.12和neo4j-community-3.5.8。 我用默认设置运行3.5.8,我可以从网上看到它。http://localhost:7474/ 对于3.5.12,我更改了conf/neo4j.conf文件,并设置了一些其他端口号,以避免与默认端口号冲突。 这里有一个现有的/d1/data/database/gr

  • 我的简单问题是:如果我有两个类似logger的语句。info()和记录器。error()在Java中(使用log4j),我希望将这两行的结果打印在两个单独的文件中。也就是说,记录器。信息(…)应该打印到一个文件,比如myLog。信息和记录器。错误(…)应该打印到myLog。错误文件。我正在使用滚动文件追加器执行此任务。另外,我只需要一个记录器对象来完成任务。有人可能会建议两个或多个不同的记录器,每

  • 我的目标是: 实现所有自定义,内置记录器从同一个包到不同的文件。 信息-信息日志文件 我尝试的是: 问题是: 记录器名称相同。因此,最新的记录器只能工作。在这种情况下,Info可以工作,但也不能调试。 我的疑问是: 我引用了这么多帖子。我认为下面的方法是有效的。 按此处所述,将每一个作为自定义记录器。但我确信这是否正确的解决方案