我已经部署在WebLogic与log4j2.xml日志路径设置为log4j2记录在错误的道路发生
<Property name="logPath">some_path_1<Property>
,并定义为
<Logger name="a.b.c.d" level="INFO" />
这里面耳塞/ lib中有一个记录器耳是一个jar包含log4j2.xml和logPath属性被定义为
<Property name="logPath">some_path_2<Property>
和一个非常simil记录器ar包装结构
<Logger name="a.b.c" level="INFO" />
两个log4j2.xml都被配置为具有不同的日志文件名称。 但是两者的日志都在路径some_path_2和在该jar中定义的文件名
如何确保两个日志输出按定义单独发生?
我的耳朵结构是这样
ear
|--lib
|--|--abc.jar
|--|--|--log4j2.xml //the one thats getting loaded
|--xyz.war
|--|--WEB-INF
|--|--|--classes
|--|--|--|--log4j2.xml // the one I want
EDIT1:我添加的遏制战争的web.xml以下,但它并没有帮助
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/classes/log4j2.xml</param-value>
</context-param>
EDIT2:我也尝试过这一点,并发现这是通过使用配置工作间歇
ear
|--lib
|--|--abc.jar
|--|--|--log4j2.xml //the one thats getting loaded
|--|--xyz.jar
|--|--|--log4j2.xml //the one I want.. works but not always.Does classloader loads the jars alphabetically?
|--xyz.war
|--|--WEB-INF
|--|--|--classes
|--|--|--|--log4j2.xml // the one I want
我想你让log4j2模块在类路径中搜索log4j2配置文件。因此,基于无论哪个jar,都会先加载目录,然后加载配置文件。 可能的话,您可以将'-Dlog4j.configurationFile = path/to/log4j2.xml'作为参数。如果这是不可能的,以编程方式让log4j找到特定的路径。 – Andrews
“如何确保两个记录输出按照定义分开进行?”不支持多个配置文件。您必须手动合并配置,然后您需要指定log4j2.xml与@Andrews建议的属性一起使用,否则您必须确保类路径中只有一个log4j2.xml。 – alan7678