0

我有应用程序 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 的专有应用程序(属于他们的一个通信套件产品)会崩溃。B.ear 是我开发的自定义应用程序,其中包含插件,这些插件只不过是由 A.ear 调用的 Enterprise bean。

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

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

谢谢

4

1 回答 1

0

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

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

于 2012-03-19T08:03:56.640 回答