- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我们有以下设置:
应用服务器: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/
在C语言中,当有变量(假设都是int)i小于j时,我们可以用等式 i^=j^=i^=j 交换两个变量的值。例如,令int i = 3,j = 5;在计算 i^=j^=i^=j 之后,我有 i = 5,
我为以下问题编写了以下代码: 给定一个由 N 个正整数组成的序列 A,编写一个程序来查找满足 i > A[j]A[i](A[i] 的 A[j] 次方 > A[j] 的 A[i] 次方)。 我的代码通过
这个表达式是从左到右解析的吗?我试图解释解析的结果,但最后的结果是错误的。 int j=10, k=10; j+=j-=j*=j; //j=j+(j-=j*=j)=j+(j-j*j) k+=k*=
给定一个整数数组 A ,我试图找出在给定位置 j ,A[j] 从每个 i=0 到 i=j 在 A 中出现了多少次。我设计了一个如下所示的解决方案 map CF[400005]; for(int i=0
你能帮我算法吗: 给定 2 个相同大小的数组 a[]和 b[]具有大于或等于 1 的整数。 查找不相等的索引 i和 j ( i != j ) 使得值 -max(a[i]*b[i] + a[i] * b
每次用J的M.副词,性能显着下降。因为我怀疑艾弗森和许比我聪明得多,我一定是做错了什么。 考虑 Collatz conjecture .这里似乎有各种各样的内存机会,但不管我放在哪里M. ,性能太差了
假设一个包含各种类型的盒装矩阵: matrix =: ('abc';'defgh';23),:('foo';'bar';45) matrix +---+-----+--+|abc|defgh|23|+
是否有可能对于两个正整数 i 和 j,(-i)/j 不等于 -(i/j)?我不知道这是否可能......我认为这将是关于位的东西,或者 char 类型的溢出或其他东西,但我找不到它。有什么想法吗? 最
假设两个不同大小的数组: N0 =: i. 50 N1 =: i. 500 应该有一种方法可以获得唯一的对,只需将两者结合起来即可。我发现的“最简单”是: ]$R =: |:,"2 |: (,.N0)
我是 J 的新用户,我只是想知道 J 包中是否实现了三次样条插值方法? 最佳答案 我自己不熟悉,但是我确实安装了所有的包,所以 $ rg -l -i spline /usr/share/j/9.02
在 Q/kdb 中,您可以使用 ': 轻松修改动词,它代表每个优先级。它会将动词应用于一个元素及其之前的邻居。例如 =': 检查值对是否相等。在 J 中,您可以轻松折叠 /\ 但它是累积的,是否有成对
嗨,我有一个 4x4 双矩阵 A 1+2i 2-1i -3-2i -1+4i 3-1i -3+2i 1-3i -1-3i 4+3i 3+5i 1-2i -1-4i
刚刚发现 J 语言,我输入: 1+^o.*0j1 I expected the answer to be 0 ,但我得到了 0j1.22465e_16。虽然这非常接近于 0,但我想知道为什么 J 应该
这个问题在这里已经有了答案: With arrays, why is it the case that a[5] == 5[a]? (20 个答案) 关闭 3 年前。 我正在阅读“C++ 编程语言”
当第一行是 1, 1/2 , 1/3 ....这是支持该问题的图像。 是否存在比朴素的 O(n^2) 方法更有效的方法? 我在研究伯努利数时遇到了这个问题,然后在研究“Akiyama-Tanigawa
我写了一段Java代码,它在无限循环中运行。 下面是代码: public class TestProgram { public static void main(String[] args){
for (int i = n; i > 0; i /= 2) { for (int j = 0; j 0; i /= 2) 的第一个循环结果 O(log N) . 第二个循环for (int
如问题中所述,需要找到数组中 (i,j) 对的总数,使得 (1) **ia[j]** 其中 i 和 j 是数组的索引。没有空间限制。 我的问题是 1) Is there any approach w
for l in range(1,len(S)-1): for i in range(1,len(S)-l): j=i+l for X in N:
第二个for循环的复杂度是多少?会是n-i吗?根据我的理解,第一个 for 循环将执行 n 次,但第二个 for 循环中的索引设置为 i。 //where n is the number elemen
我是一名优秀的程序员,十分优秀!