log4j2.xml配置是读取当前项目的,还是引用的jar包里面的配置?

当前应用A(log4j2.xml配置)为一个web接口,引用了jar包B和C,其中B和C的包中都配置了log4j2.xml,
那么当A启动后,代码运行到B或者C当中的某个打印日志语句时候读取的是B/C的配置,还是当前A的配置?

默认是classpath下的那个 https://www.bbsmax.com/A/QV5ZQMVJyb/

@caozhy 是当前A下面的classpath还是自己jar包里面的classpath?

看看官方的解释:https://logging.apache.org/log4j/2.x/manual/configuration.html

  1. 若系统设置了log4j.configurationFile属性,则会使用该属性指定的配置文件。
  2. 否则在classpath下查找log4j2-test.properties
  3. 否则在classpath下查找log4j2-test.yamllog4j2-test.yml
  4. 否则在classpath下查找log4j2-test.jsonlog4j2-test.jsn
  5. 否则在classpath下查找log4j2-test.xml
  6. 否则在classpath下查找log4j2.properties
  7. 否则在classpath下查找log4j2.yamllog4j2.yml
  8. 否则在classpath下查找log4j2.jsonlog4j2.jsn
  9. 否则在classpath下查找log4j2.xml
  10. 如果找不到配置文件,将使用默认配置。即把日志记录输出到控制台。
  1. 看你的配置文件如何去扫描的,如果扫描的情况是classpath*的话,那么应该是都要去读取;
  2. 如果只是设置了classpath主要去读取A中的配置,jar中的配置不生效;