Which takes priority: logback.xml or logback-test.xml? Which takes priority: logback.xml or logback-test.xml? xml xml

Which takes priority: logback.xml or logback-test.xml?


From the docs:

Let us begin by discussing the initialization steps that logback follows to try to configure itself:

  1. Logback tries to find a file called logback-test.xml in the classpath.

  2. If no such file is found, logback tries to find a file called logback.groovy in the classpath.

  3. If no such file is found, it checks for the file logback.xml in the classpath..

  4. If no such file is found, service-provider loading facility (introduced in JDK 1.6) is used to resolve the implementation of com.qos.logback.classic.spi.Configurator interface by looking up the file META-INF\services\ch.qos.logback.classic.spi.Configurator in the class path. Its contents should specify the fully qualified class name of the desired Configurator implementation.

  5. If none of the above succeeds, logback configures itself automatically using the BasicConfigurator which will cause logging output to be directed to the console.

The last step is meant as last-ditch effort to provide a default (but very basic) logging functionality in the absence of a configuration file.

So, the answer to this question ...

Which takes priority: logback.xml or logback-test.xml?

... is logback-test.xml.

However, this question ...

So is it like logback-test.xml file will take a priority over logback.xml if we deploy the application?

... slightly complicates matters. If you deploy both logback-test.xml and logback.xml then logback-test.xml wil take priority but it is not common to deploy logback-test.xml. Indeed, given the locations supplied in your question logback-test.xml will not, by default, be deployed since it is in the test tree (src/test/resources).

Again, from the docs:

If you are using Maven and if you place the logback-test.xml under the src/test/resources folder, Maven will ensure that it won't be included in the artifact produced. Thus, you can use a different configuration file, namely logback-test.xml during testing, and another file, namely, logback.xml, in production.

So, in summary; by default logback-test.xml will not be deployed so logback.xml will be used in your deployed system but logback-test.xml will take priority over logback.xml when running your test cases.