Search code examples
javaspring-bootlogginglogback

Where does Spring Boot store its default logging settings


I'm creating a Java Spring Boot 2.X application. In my configuration (application.yml), I have added the following property:

logging:
    file: ${spring.applicaton.name}.log

This seems to work out of the box. However, I'm curious where the underlying default log configurations reside. Using google I found out that Spring Boot uses logback, but I cannot see a logback-spring.xml file. Also this other question seems to mention log4j2 instead of logback - does that work because they added a dependency on log4j2 (I have not added any dependency except for the sprint boot starter). what I also observed is that the two main logging mechanisms seem to be a rolling file appender and the console logger. Where is this defined?

My question is: where does Spring Boot pick up its default log configuration? I found these configuration files but I'm not sure if they are correct. Their naming convention and syntax is not what I expected. how do you choose a specific logging implementation - by dependencies or by configuration?


Solution

  • The default Logback configuration is stored in:

    spring-boot-2.1.1.RELEASE.jar
        /org/springframework/boot/logging/logback/base.xml
    

    The default Log4j2 configuration is stored in:

    spring-boot-2.1.1.RELEASE.jar
        /org/springframework/boot/logging/log4j2/log4j2-file.xml
    

    The default Java Util Logging configuration is stored in:

    spring-boot-2.1.1.RELEASE.jar
        /org/springframework/boot/logging/java/logging-file.properties
    

    Note: The version of the jar file varies, of course.

    Spring defaults to Logback. Read the Spring documentation for how to specify a different implementation and for how to configure it.