I just announced the new Spring Boot 2 material, coming in REST With Spring:

>> CHECK OUT THE COURSE

1. Overview

Usually, console logs give us the opportunity to debug our system in an easy and intuitive way. Nevertheless, there are occasions when we don’t want to enable this feature in our system.

In this quick tutorial, we’ll see how to avoid logging to the console when running a Spring Boot application.

We’ll keep it simple with straight-to-the-point examples showing how to achieve this, whether we are using Logback, Log4js2, or even the Java Util Logging framework.

To learn more about logging frameworks for Spring Boot, we suggest having a look at our Logging in Spring Boot tutorial.

2. How to Disable the Console Output for Logback

If our project uses Spring Boot starters, then the spring-boot-starter-logging dependency will be included as well.

This particular starter configures Logback as the default framework and initially logs only to the console by default.

This configuration can be customized by adding a logback-spring.xml file to our resources.

For example, let’s set up the XML so as to disable the console output and log only to a file:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <include resource=
      "org/springframework/boot/logging/logback/defaults.xml" />
    <include resource=
      "org/springframework/boot/logging/logback/file-appender.xml" />
    <root level="INFO">
        <appender-ref ref="FILE" />
    </root>
</configuration>

Additionally, we’ll need the logging.file configuration property in our application.properties file:

logging.file=baeldung-disabled-console.log

Note: what is actually disabling the console output here is the fact that we aren’t including the console-appender.xml in our XML file, so an empty configuration tag would also do the trick.

Alternatively, we can avoid creating the XML file by overriding the default configuration with application properties.

For example, we can potentially make use of the logging.pattern.console property:

logging.pattern.console=

This property is translated to the CONSOLE_LOG_PATTERN system property, which is then used by the Spring default console configuration.

This approach, of course, isn’t as clean and solid as the previous one. It’s not the intended purpose of the property, thus this ‘hack’ might not be supported by Logback at some point.

Furthermore, we can disable all logging activity by setting the value of the root logger level to OFF:

logging.level.root=OFF

3. How to Avoid Logging in the Console with Log4j2

As we may know, Log4j2 supports XML, JSON, YAML, or properties formats to configure its logging behavior.

For the sake of simplicity, we’ll just show a simple example of a log4j2.xml file this time.

The other formats respect the same configuration structure:

<Configuration status="INFO">
    <Appenders>
        <File name="MyFile" fileName="baeldung.log"
          immediateFlush="true" append="false">
        <PatternLayout pattern=
          "%d{yyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </File>
    </Appenders>
    <Loggers>
        <Root level="info">
            <AppenderRef ref="MyFile"/>
        </Root>
    </Loggers>
</Configuration>

As with the Logback setup, the reason why the framework avoids logging to the console is not the configuration ‘per se’, but the fact that the Root Logger doesn’t contain a reference to a Console Appender.

4. How to Disable Console Logging for Java Util Logging

Java Util Logging (or simply ‘JUL’) might not be the most popular logging solution for Spring Boot applications nowadays.

Anyway, we’ll analyze how we can get rid of console logs, in case the framework is present in our project.

All we have to do is add the following values to the default logging.properties in our resources folder:

handlers=java.util.logging.FileHandler
java.util.logging.FileHandler.pattern=baeldung.log
java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter

And include the logging.file property in our application.properties file. Any value will do the trick:

logging.file=true

5. Conclusion

With these short examples, we can now disable console logs in our application in a hassle-free manner, no matter what logging framework we’re using.

As always, we can find the examples’ implementations in our Github repository.

I just announced the new Spring Boot 2 material, coming in REST With Spring:

>> CHECK OUT THE LESSONS

newest oldest most voted
Notify of
Anonymous
Guest
Anonymous

How can you achieve, console logging when developing in ide, but disabling console and switching to file in non local environment

Loredana Crusoveanu
Editor

A good solution for this is using Spring Profiles with separate properties files for each profile/environment. Spring Boot automatically loads properties files of the form application-dev.properties if you’re on the “dev” profile and so on.

Ger Roza
Guest
Ger Roza

On top of Loredana’s comment, I’ll also suggest having a look at the tag provided by Logback (https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-logging.html#_profile_specific_configuration), in case you are using this framework.