log4j2日志记录发生在错误的路径上

raj*_*esh 7 java logging log4j weblogic12c log4j2

我在weblogic中部署了一个ear,并将log4j2.xml logPath设置为

<Property name="logPath">some_path_1<Property>
Run Code Online (Sandbox Code Playgroud)

和记录器定义为

<Logger name="a.b.c.d" level="INFO" />
Run Code Online (Sandbox Code Playgroud)

在这个ear/lib中,有一个包含log4j2.xml的jar,logPath属性定义为

<Property name="logPath">some_path_2<Property>
Run Code Online (Sandbox Code Playgroud)

和一个包装结构非常相似的记录器

<Logger name="a.b.c" level="INFO" />
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

Edit1:我在包含war的web.xml中添加了以下内容,但它没有帮助

    <context-param>
        <param-name>log4jConfigLocation</param-name>
        <param-value>/WEB-INF/classes/log4j2.xml</param-value>
    </context-param>
Run Code Online (Sandbox Code Playgroud)

编辑2:我也试过这个,发现这是间歇性的

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
Run Code Online (Sandbox Code Playgroud)

Her*_*eri 2

Log4j 仅使用 log4j 引导程序首先找到的配置文件初始化一次。所有其他(可能存在)配置文件将不被考虑。在相应的教程中了解有关 log4j 自动配置优先级的更多信息。