Spring Boot – How to write console log to file

In this article, we’ll see about writing a console log to file using the spring boot logging framework. The Spring Boot application logs begins with a banner. The default logs are seen in the info mode in the console. The spring boot logging framework supports to redirect log to file using spring boot configurations.

When developing large application, showing logs in console is a security issue. Logs must be redirected to log file or disable the console log. Spring boot supports easy way of writing console log to file



Console Log

The following logs are example logs that are seen when the spring boot application begins. We’re expected to save log to file. Otherwise, logs would be deleted from the console browser.

.   ____          _            __ _ _
 /\ / ___'_ __ _ _(_)_ __  __ _    
( ( )___ | '_ | '_| | '_ / _` |    
 \/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |___, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.1.2.RELEASE)

2019-02-09 16:34:44.942  INFO 3972 --- [           main] l.SpringBootDisableConsoleLogApplication : Starting SpringBootDisableConsoleLogApplication on YawinLaptop1-PC with PID 3972 (D:stsworkspaceSpringBootDisableConsoleLogtargetclasses started by Karthik in D:stsworkspaceSpringBootDisableConsoleLog)
2019-02-09 16:34:44.947  INFO 3972 --- [           main] l.SpringBootDisableConsoleLogApplication : No active profile set, falling back to default profiles: default
2019-02-09 16:34:49.114  INFO 3972 --- [           main] l.SpringBootDisableConsoleLogApplication : Started SpringBootDisableConsoleLogApplication in 10.461 seconds (JVM running for 20.27)


Steps to write console log to file in Spring Boot

Console logs have two sections, banners and logs. The banner will be shown when the spring boot application begins. The spring boot logging framework logs will be shown as the spring boot loads the application. To delete logs from the console window, the banner and console log message must be written to the configured file.

Here, we’ll see different ways to write the spring boot console log to a configured log file.



1. Application.properties

The simplest way to write a console log to a file is to configure in the application.properties file. The path for the application.properties file is src/main/resources. The following log configuration would delete all the banner and logs from the console and write the log to the file.

spring.main.banner-mode=log
logging.file=logs/test.log
logging.pattern.console=


2. Application.yml file

The other way to write a console log to a file is to configure in the application.yml file. The path for the application.yml file is src/main/resources. The following log configuration should be added in yaml file to delete all the banner and logs from the console and write the log to the file.

spring:
  main:
    banner-mode: "log"
logging:
  file: "logs/test.log"
  pattern:
    console:


3. SpringBootApplication main method

The console logs can be moved to file by configuring the logger in the program. The spring boot logging framework api supports to configure to redirect log to file.

package com.yawintutor.log;

import java.util.Properties;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SpringBootWriteConsoleLogApplication {

	public static void main(String[] args) {
		SpringApplication application = new SpringApplication(SpringBootWriteConsoleLogApplication.class);
		Properties properties = new Properties();
		properties.setProperty("spring.main.banner-mode", "log");
		properties.setProperty("logging.file","logs/test.log");
		properties.setProperty("logging.pattern.console", "");
		application.setDefaultProperties(properties);
		application.run(args);
	}
}


4. As command line argument

If the spring boot application is built and jar is created, the spring boot logging can be configured using the command line arguments. The command line argument to write log to file is as shown below.

java -Dspring.main.banner-mode=log -Dlogging.pattern.console= -jar logging.file=logs/test.log SpringBootWriteConsoleLogApplication-0.0.1.jar

The location of the log file is logs / test.log. The console banner and console logs are written in this log file instead of in a console.



Related Articles

2 Comments

  • cmyks , January 17, 2021 @ 1:48 AM

    Works only for banner, after start everything else is still printed to the console

    • Yawin Tutor , January 19, 2021 @ 8:30 PM

      The below code will filter the log in console.

      logging.pattern.console=

      Verify your configuration setting. It might be reset after restart

      Thanks
      Yawin Tutor

Leave a Reply

Your email address will not be published. Required fields are marked *