spring boot使用logback-test.xml而不是logback.xml

时间:2015-03-10 04:33:57

标签: gradle spring-boot slf4j logback build.gradle

我有一个gradle项目,结构看起来像这样

>
> main (one project)
> shared (another project)
> api 
>> shared2 (another project)

主项目取决于共享和共享2项目。 shared和shared2项目的src / test / resources文件夹中都有一个logback-test.xml,主项目的src / main / resources文件夹中有一个logback.xml。

当我使用其主Application类在eclipse中运行主项目时,我希望在classpath中只加载logback.xml。相反,我看到警告发现多个slf4j绑定,更重要的是,日志设置是从logback-test.xml而不是logback.xml应用的。这是用于进一步说明的文件夹结构

>
> main
> > src/main/resources
> > > logback.xml
> shared
> > src/test/resources
> > > logback-test.xml
> api/shared2
> > src/test/resources
> > > logback-test.xml

在两个logback-test.xml文件中,我在DEBUG级别启用了org.springframework调试,在logback.xml中启用了它在INFO级别的设置。当我启动应用程序时,我看到了弹簧DEBUG日志。

以下是github示例项目 https://github.com/adeelmahmood/logback-test-conf-issue

1 个答案:

答案 0 :(得分:4)

以下是logback库查找配置xml文件的顺序:(来自文档)

  
      
  1. Logback尝试在类路径中查找名为logback.groovy的文件。

  2.   
  3. 如果未找到此类文件,则logback会尝试查找名为的文件   类路径中的logback-test.xml。

  4.   
  5. 如果找不到这样的文件,它会检查文件中的logback.xml   类路径..

  6.   
  7. 如果找不到任何文件,则logback会自动配置自身   使用BasicConfigurator将导致日志记录输出   指向控制台。

  8.   

因此,在您的情况下,logback在类路径中找到logback-test.xml并相应地记录。

您可以通过设置名为logback.configurationFile的系统属性来指定您自己的配置文件位置。