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
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.
properties file will be defined as properties in the logback. xml file.
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.
From the docs:
Let us begin by discussing the initialization steps that logback follows to try to configure itself:
Logback tries to find a file called logback-test.xml in the classpath.
If no such file is found, logback tries to find a file called logback.groovy in the classpath.
If no such file is found, it checks for the file logback.xml in the classpath..
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.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With