Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

Tags:

I am very new to logback. If my spring boot project contains both the files -

  • logback.xml: present under *src/main/resources/
  • logback-test.xml: present under *src/test/resources/

Which one will load? logback.xml or logback-test.xml?

I was reading the documentation of logback and it says, first it looks for logback-test.xml and then logback.xml.

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

Thanks!

Saurabh

like image 821
Saurabh Deshpande Avatar asked May 28 '18 06:05

Saurabh Deshpande


People also ask

Where should I put the Logback xml?

In a Spring Boot application, you can put the Logback. xml file in the resources folder. If your Logback. xml file is outside the classpath, you need to point to its location using the Logback.

Which of the following file is used by Logback logging system?

properties file will be defined as properties in the logback. xml file.

How do I enable debug logs in Logback xml?

You can now use -Dlogback. debug=true to enable debugging of the logback setup. Unfortunately, there is no way to enable debugging via a System property. You have to use <configuration debug="true"> in the logback.


1 Answers

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.

like image 86
glytching Avatar answered Sep 28 '22 08:09

glytching