【问题标题】:Making log4j loggers visible accross mutiple applications that are deployed on same server使 log4j 记录器在部署在同一服务器上的多个应用程序中可见
【发布时间】:2012-03-16 18:26:46
【问题描述】:

我有一个应用程序 A.ear,其中包括一个 Web 应用程序 A.war。我在这场战争中包含了 log4jAdmin.jsp,以在运行时动态控制此应用程序中使用的记录器的记录级别。我还在同一服务器实例中的 weblogic 中部署了另一个应用程序 B.ear。这个应用程序也在它自己的 log4j.xml 文件中定义了它的记录器份额。如何使应用程序 B.ear 的记录器在 log4jAdmin.jsp 页面中可见,该页面是 A.ear 的一部分。我正在使用 weblogic 9.2。

我知道根据类加载器的概念,每个应用程序都有自己的类加载器,将 log4j 相关文件(jar 和 xml)移动到公共域文件夹的解决方案可能会奏效,但由于我无法控制的原因,我不能这样做如果我遵循这条路线,A.ear 是 Oracle 的专有应用程序(属于他们的 Communication Suite 产品之一)会崩溃。 B.ear 是我开发的自定义应用程序,其中包含插件,这些插件只不过是由 A.ear 调用的 Enterprise bean。

那么有没有一种方法可以让记录器在所有部署的应用程序中可见,以便仅使用一个 log4jAdmin.jsp 就可以更改它们的记录级别?我知道我想要实现的目标确实有效,因为我注意到它在 Oracle 为 WL 10.3.3 发布的最新版本的 A.ear 中工作。为 B.ear 定义的记录器在 A.ear 的 log4jAdmin.jsp 页面中可见。所以我想知道需要做什么才能在 WL 9.2 中获得相同的结果。

任何帮助/提示将不胜感激。

谢谢

【问题讨论】:

    标签: log4j weblogic9.x


    【解决方案1】:

    我没有使用过 WebLogic,因此我的建议将是推测性的,并且是一般性的。

    由于类加载层次结构方案是由 EJB 规范定义的,我会尝试在层次结构中尽可能高地部署 log4j 及其配置。大多数应用程序服务器都有一个“扩展”目录,您可以在其中放置由扩展类加载器可见的 jar,该类加载器优先于所有 web/ear 类加载器。您可以将 log4j.jar 和(重要的!)log4j.xml 放在那里。可能需要将 log4j.xml 打包到 jar 文件中(我不知道 WL 特定的详细信息),因为类加载器通常只查找 jar。

    【讨论】:

      猜你喜欢
      • 2017-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-10
      • 2013-01-28
      相关资源
      最近更新 更多