【问题标题】:Single log file for multiple webapps多个 web 应用程序的单个日志文件
【发布时间】:2014-05-27 07:01:30
【问题描述】:

在我的 tomcat 中部署了多个 webapps,它们相互通信。目前他们都有自己的日志文件。但是,当通话出现问题时,我必须首先检查我拨打电话的应用程序,并检查通话中涉及的各个应用程序的日志文件。所以我想要这样,因为所有应用程序都部署在同一个 tomcat 中并共享一个公共 log4j,如果调用任何应用程序,那么所有日志都应该在一个日志文件中,无论我的 webapps 如何参与,所有错误都来自任何 webapp通话期间应在单个日志文件中。

我不知道如何才能做到这一点。所以任何帮助都是可观的。

已编辑: 我认为我的问题没有得到解决,因此用用例进行了更新:

  1. 我有三个 Web 应用 A、B、C,其日志文件分别为 A.log、B.log 和 C.log。
  2. 我打了两个电话。第一个到 A(内部调用 C)和第二个到 B(内部调用 C)。
  3. 现在第一次调用的日志必须在 A.log 中(包含在 webapp c 中执行的每个步骤的日志),第二次调用必须在 B.log 中(在 webapp c 中执行的每个步骤的日志)。

【问题讨论】:

  • 嗨,尝试将您的日志文件放在 apache 日志文件夹中,并在 log4j 属性文件中给出该文件的路径。

标签: java logging log4j2


【解决方案1】:

我宁愿建议您将日志文件保持原样并使用单独的日志收集器服务。然后,您可以使用该服务搜索您想知道的内容。作为额外的奖励,您可以获得过滤器和其他漂亮的功能。

LogStash 是我听说过的好消息之一。虽然还没有时间使用它,但我认为这是一个应该去的方向。在front page 和入门资料here 上有一个关于它的演示文稿。

免责声明:我与他们没有任何关系,我只是认为这是日志分析的方向。

【讨论】:

    【解决方案2】:

    Log4j 的 FileAppender 不允许从多个应用程序写入同一个文件。如果你尝试,你会得到一个损坏的日志文件。但是,logback 可以做到这一点,看看http://logback.qos.ch/manual/appenders.html#prudent

    【讨论】:

      【解决方案3】:

      如果你使用java.util.Logging而不是log4j会更容易。

      部署的 Web 应用程序使用 java 日志记录,默认使用应用程序服务器 logging.properties。所以所有的网络应用都会引用同一个 logging.properties 文件,并且会在同一个地方登录。

      通常,这被认为是 Java 日志框架的障碍,但您的用例非常适合。

      你会在网上找到很多 java.util.logging 的例子。

      【讨论】:

        猜你喜欢
        • 2013-08-29
        • 1970-01-01
        • 1970-01-01
        • 2020-06-02
        • 1970-01-01
        • 1970-01-01
        • 2010-11-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多