我有一个有趣的情况,我试图解决,使用Log4J 2。
设置:
通常情况下,日志记录上下文正常工作,除非Web servlet调用公共代码 - 这似乎是进入启动程序的日志。
我花了相当多的时间来试图让分离工作正常。
我的印象是log4j2日志记录上下文会以某种方式从当前线程中提取,但看起来更像是从类名中选择了上下文。
log4j2记录分离/上下文是否扩展到覆盖这种情况?
示例web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<!-- Servlets -->
<servlet>
<servlet-name>SuperSayanServlet</servlet-name>
<servlet-class>com.example.super.SayanServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>SuperSayanServlet<servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
<context-param>
<param-name>log4jConfiguration</param-name>
<param-value>file:///opt/config/supersayan.log4j.xml</param-value>
</context-param>
<context-param>
<param-name>log4jContextName</param-name>
<param-value>SuperSayanServlet</param-value>
</context-param>
</web-app>
这里共享公共代码的一个主要原因是可以更好地池化数据库连接 - 一个公共池与四个独立的连接池。
任何想法都将不胜感激!
感谢。