LoginSignup
27
26

More than 5 years have passed since last update.

Spring Bootで起動/終了時のコンソール出力を抑制する

Posted at

Spring Bootでアプリを作るとデフォルトではコンソールに色々な情報が出力されます。
Webアプリやcronから実行するバッチ処理なんかでは問題ないですが、ユーザーがコマンドラインから直接実行するようなアプリの場合には邪魔になります。

ここでは起動/終了時のコンソール出力を抑制する方法をまとめます。

デフォルト設定でのコンソール出力

先ずはデフォルトでコンソールに出力される内容を確認するために、次のような簡単なアプリを作成して実行してみます。

pom.xml
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.2.5.RELEASE</version>
    </parent>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
    </dependencies>
Application.java
package tag1216.console;

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

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        try (ConfigurableApplicationContext ctx = SpringApplication.run(Application.class, args)) {
            Application app = ctx.getBean(Application.class);
            app.run(args);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }   

    public void run(String... args) throws Exception {
        System.out.println("処理開始");
        System.out.println("処理終了");
    }
}

コンソール出力はこのようになります。

(1)
  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v1.2.5.RELEASE)

(2)
2015-09-05 15:30:34.754  INFO 797 --- [           main] tag1216.console.Application              : Starting Application on ***.local with PID 797 (/Users/***/develop/eclipse-jee-4.5/workspace/console-output/target/classes started by *** in /Users/***/develop/eclipse-jee-4.5/workspace/console-output)
(3)
2015-09-05 15:30:34.813  INFO 797 --- [           main] s.c.a.AnnotationConfigApplicationContext : Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@292b08d6: startup date [Sat Sep 05 15:30:34 JST 2015]; root of context hierarchy
2015-09-05 15:30:35.484  INFO 797 --- [           main] o.s.j.e.a.AnnotationMBeanExporter        : Registering beans for JMX exposure on startup
(2)
2015-09-05 15:30:35.499  INFO 797 --- [           main] tag1216.console.Application              : Started Application in 1.031 seconds (JVM running for 1.654)
処理開始
処理終了
(3)
2015-09-05 15:30:35.500  INFO 797 --- [           main] s.c.a.AnnotationConfigApplicationContext : Closing org.springframework.context.annotation.AnnotationConfigApplicationContext@292b08d6: startup date [Sat Sep 05 15:30:34 JST 2015]; root of context hierarchy
(3)
2015-09-05 15:30:35.503  INFO 797 --- [           main] o.s.j.e.a.AnnotationMBeanExporter        : Unregistering JMX-exposed beans on shutdown

(1) 最初にSpring Bootのバナーが出力されます。
(2) その後はlogbackを使ったログ出力で、カテゴリがSpringApplicationに渡したクラス名になっている行はstartup informationというもので、マシン名、PID、ディレクトリ情報などが出力さています。
(3) その他にもログレベルINFOでいくつかのログが出力されています。

バナー表示を抑制する

バナーを非表示にするには、設定ファイル(application.ymlまたはapplication.properties)でspring.main.show-banner: falseを指定します。

application.yml
spring.main.show-banner: false

これはSpringApplicationクラスのメソッドで指定することも可能です。

Application.java
SpringApplication springApplication = new SpringApplication(Application.class);
springApplication.setShowBanner(false);

startup infomationの出力を抑制する

こちらも設定ファイルかSpringApplicationのメソッドで指定できます。

application.yml
spring.main.log-startup-info: false
Application.java
springApplication.setLogStartupInfo(false);

SpringのINFO出力を抑制する

デフォルト設定ではルートカテゴリのログレベルは[INFO]になっているので、設定ファイルでSpringのログ出力レベルを[WARN]に変更します。

application.yml
logging.level:
  org.springframework: WARN

まとめ

まとめると、設定ファイルは以下のようになります。

application.yml
spring.main:
  show-banner: false
  log-startup-info: false
logging.level:
  org.springframework: WARN

実行結果

処理開始
処理終了
27
26
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
27
26