多个webapps的单个日志文件

时间:2014-05-27 07:01:31

标签: java logging log4j2

在我的tomcat中,部署了多个webapp,它们相互通信。目前他们都有自己的日志文件。但是当有来自通话的问题时,我必须首先检查我打电话给的应用程序,并检查呼叫中涉及的相应应用程序的日志文件。所以我希望如此,因为所有应用程序都部署在同一个tomcat中并共享一个公共log4j,如果对任何应用程序进行调用,那么所有日志都应该在一个日志文件中,并且无论我的webapps是如何涉及的,所有错误都来自任何webapp在通话期间应该在一个日志文件中。

我不知道如何实现这一目标。所以任何帮助都是值得的。

编辑: 我认为我的问题没有通过用例更新如此更新:

  1. 我有三个webapps A,B,C,其日志文件为A.log,B.log和C.log。
  2. 我打了两个电话。第一个到A(内部调用C),第二个到B(内部调用C)。
  3. 现在,第一次呼叫的记录必须在A.log中(每个步骤的日志都在webapp c中执行),第二次呼叫必须在B.log中(每个步骤的日志都在webapp c中执行)。

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

LogStash是我听过的好消息。然而,Haven没有时间将它投入使用,但我认为这是应该采取的方向。在front page上有关于它的演示文稿,以及入门材料here

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

答案 2 :(得分:-1)

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

使用Java日志记录的已部署Web应用程序默认使用app server logging.properties。因此,所有Web应用程序都将引用相同的logging.properties文件,并将登录到同一位置。

通常情况下,这被认为是java日志框架的障碍,但你的用例很合适。

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