抑制Spring Boot启动/结束时的控制台输出
使用Spring Boot创建应用程序时,默认情况下会在控制台输出各种信息。
对于Web应用程序、以及从cron定时执行的批处理等,这并不是问题。但是对于用户直接从命令行执行的应用程序来说,这会变得很烦人。
在这里,我将总结如何抑制启动/关闭时的控制台输出。
默认设置下的控制台输出
为了确认首先默认情况下在控制台输出的内容,我们将创建并执行一个简单的应用程序如下。
<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>
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
最初会输出Spring Boot的横幅标识。
之后,使用logback进行日志输出,传递给SpringApplication的类名将成为启动信息,包括机器名、PID、目录信息等进行输出。
还有其他一些以INFO级别输出的日志。
抑制横幅广告网络展示
在设置文件(application.yml或application.properties)中指定spring.main.show-banner: false可以隐藏横幅。
spring.main.show-banner: false
在SpringApplication类的方法中也可以指定这个。
SpringApplication springApplication = new SpringApplication(Application.class);
springApplication.setShowBanner(false);
抑制启动信息的输出
这个也可以通过配置文件或者SpringApplication的方法来指定。
spring.main.log-startup-info: false
springApplication.setLogStartupInfo(false);
抑制输出Spring的INFO信息
在默认设置中,根目录的日志级别为[INFO],因此需要通过配置文件将Spring的日志输出级别更改为[WARN]。
logging.level:
org.springframework: WARN
总结
总结一下,配置文件如下所示。
spring.main:
show-banner: false
log-startup-info: false
logging.level:
org.springframework: WARN
执行结果
処理開始
処理終了