主应用启动时,src/main与test下的Log4j2.xml哪个会被加载?
主应用启动时的Log4j2配置选择问题
主应用启动时会加载src/main/resources下的log4j2.xml,不会使用test目录下的配置,原因如下:
- Java项目(包括Spring Boot)的类路径规则明确:
src/test/resources下的资源仅在**测试阶段(比如运行JUnit测试)**才会被纳入类路径,主应用正常启动(开发、生产环境运行)时,这个目录的资源不会被加载。 - 主应用启动时,类路径仅包含
src/main/resources、项目依赖库等运行相关的资源目录,Log4j2会从这个类路径下读取配置文件,自然会选中main目录下的INFO级别配置。 - 只有运行JUnit测试时,Maven、Gradle这类构建工具会把
src/test/resources的资源加入类路径,而且其优先级通常高于src/main/resources下的同名资源,这时候才会加载test目录下的ERROR级别配置,刚好符合你仅测试时日志为ERROR的需求。
内容的提问来源于stack exchange,提问作者AppsMaker
相关产品推荐
相关产品推荐

