我试图在我的任何其他代码有机会执行之前在日志中尽早打印我的应用程序版本,这样如果发生错误,该版本就会包含在日志文件中。
@SpringBootApplication
public class Application {
public static void main( String... args ) {
var ctx = SpringApplication.run( Application.class, args );
ctx.getBeanProvider( BuildProperties.class ).ifAvailable( bp -> {
LogManager.getLogger( Application.class ).info( bp.getArtifact() );
} );
}
}
但是 ifAvailable
中的 block 没有执行,我想特别打印版本。
注意:这是在 build.gradle.kts
springBoot {
buildInfo() // generates BOOT-INF/classes/META-INF/build-info.properties
}
更新 失败,没有这样的 bean...
@SpringBootApplication
public class Application {
public static void main( String... args ) {
SpringApplication.run( Application.class, args );
}
@Bean
CommandLineRunner runner( BuildProperties bp ) {
return args -> LogManager.getLogger( Application.class ).info( bp.getArtifact() );
}
}
更新 2: 不必在横幅之后,但必须足够早,以便它在自定义代码的任何验证/错误之前打印。
最佳答案
假设你正在装一个 jar (否则需要做一些修改)
tasks.withType<BootJar>().configureEach {
enabled = true
manifest {
attributes(
"Implementation-Title" to project.description,
"Implementation-Version" to project.version
)
}
}
然后 customize your banner.txt
;例如
${application.title} ${application.version}
关于java - 如何在 Spring Boot 的日志中尽早打印应用程序版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54083990/