gpt4 book ai didi

java - 单个 weblogic 容器中的 Web 应用程序的单独 log4j2 文件

转载 作者:太空宇宙 更新时间:2023-11-04 06:31:55 25 4
gpt4 key购买 nike

我们有以下设置:

应用服务器:Weblogic 10.3.6

我们有 2 台托管服务器,并且在两台托管服务器上部署了 3 个 Web 应用程序。所有 log4j2 jar 都保存在服务器库中并在服务器启动时加载。

现在我们希望每个 Web 应用程序都有自己的 logj2 配置,因为我们希望控制日志级别。

我们尝试在 web.xml 中使用 log4j2-web.jar 进行初始化,为每个 Web 应用程序创建单独的 log4j2 配置文件,但我们观察到,当我们加载第一个 Web 应用程序时,log4j2 配置文件会被加载,但是当我们尝试加载第二个和第三个 Web 应用程序及其单独的 log4j 配置 xml 时,它不会加载新的配置文件,而是设置首先部署的第一个 Web 应用程序的 log4j2 配置。

我尝试调试相同的内容,并发现由于 log4j2 jar 存在于服务器类加载器中,因此它们对所有 Web 应用程序都是通用的,并且 log4j2 使用类加载器来加载记录器上下文。

现在我希望每个应用程序都有其单独的 log4j2 实现,这对于其他 Web 应用程序来说是不常见的。因此每个应用程序的日志记录都会有所不同。

请注意,我无法在每个 Web 应用程序的 WEB-INF/lib 中复制 log4j2 库,因为我们已经有 war 的大小限制。

请建议我如何在单个 weblogic 容器中为每个 Web 应用程序实现单独的 log4j2 配置。

我尝试使用 JNDIContextSelector,但它在 Weblogic 中不起作用,或者我不知道如何使其在 weblogic 中工作,因为在完成 log4j2 网站中提到的所有必需更改后,它无法找到记录器。

请帮助我,因为我上周遇到了同样的问题。

最佳答案

不幸的是,到目前为止,我所知道的最简单的解决方案是将 log4j2 库包含在每个 Web 应用程序的 WEB-INF/lib 中......

如果 log4j2 jar 文件位于共享库目录中,则它们由共享类加载器加载,并且配置在所有 Web 应用程序之间共享。这就是 Web 容器和 log4j2 的设计方式...

我会重点关注你提到的这个尺寸限制。为什么您的 war 文件有大小限制?也许还有另一种方法可以解决这个尺寸限制?购买额外的硬盘或更大的服务器可以解决问题吗? (硬件比您和您的开发团队在这方面花费的时间便宜得多......)

如果您真的很绝望,您可以尝试使用具有不同名称的记录器的一种配置,这些记录器可以记录到不同的文件或在不同级别上进行过滤。当您的应用程序调用 LogManager.getLogger 时,您传递的字符串将成为记录器的名称。该字符串可在配置中使用来控制过滤和目标附加程序。您可以在应用程序中做的一件事是为记录器提供应用程序唯一的名称,如下所示:

// App.getPrefix() returns "app1." or "app2." etc: a unique name for each web app
Logger logger = LogManager.getLogger(App.getPrefix() + getClass().getName());

然后在您的配置中使用不同的记录器和附加程序:

<Configuration status="debug">
<Appenders>
<File name="app1File" ...
<File name="app2File" ...
</Appenders>
<Loggers>
<Logger name="app1" level="TRACE">
<AppenderRef ref="app1File"/>
</Logger>
<Logger name="app2" level="TRACE">
<AppenderRef ref="app2File"/>
</Logger>
</Loggers>
</Configuration>

这显然有点黑客行为,并且不适用于开发团队控制之外的类...

您还可以在 log4j-user 邮件列表上询问,看看其他 log4j2 团队成员是否有任何想法。

关于java - 单个 weblogic 容器中的 Web 应用程序的单独 log4j2 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26025727/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com