Java 在外部Tomcat上启动应用程序之前的Spring引导日志记录
每当Spring Boot应用程序即将启动时,我都会尝试做一些日志记录 目前,我有一个实现Java 在外部Tomcat上启动应用程序之前的Spring引导日志记录,java,spring,spring-boot,log4j2,Java,Spring,Spring Boot,Log4j2,每当Spring Boot应用程序即将启动时,我都会尝试做一些日志记录 目前,我有一个实现ApplicationEnvironmentPreparedEvent的类,我正在SpringBootApplication的主函数中将其注册为侦听器 Application.java: @SpringBootApplication public class Application extends SpringBootServletInitializer { private static final
ApplicationEnvironmentPreparedEvent
的类,我正在SpringBootApplication
的主函数中将其注册为侦听器
Application.java:
@SpringBootApplication
public class Application extends SpringBootServletInitializer {
private static final Logger appLogger = LoggerFactory.getLogger(Application.class);
public static void main(String[] args) {
System.out.println("INIT");
appLogger.info("Initializing");
SpringApplication sa = new SpringApplication();
sa.addListeners(new InitializationLogger());
sa.setSources(new HashSet<>(Collections.singletonList(Application.class)));
sa.run(args);
appLogger.info("--Application Started--");
}
}
@springboot应用程序
公共类应用程序扩展了SpringBootServletInitializer{
私有静态最终记录器appLogger=LoggerFactory.getLogger(Application.class);
公共静态void main(字符串[]args){
System.out.println(“INIT”);
appLogger.info(“初始化”);
SpringApplication sa=新的SpringApplication();
addListeners(新的InitializationLogger());
setSources(新的HashSet(Collections.singletonList(Application.class));
sa.run(args);
appLogger.info(“--应用程序已启动--”);
}
}
InitializationLogger.java
public class InitializationLogger implements ApplicationListener<ApplicationEnvironmentPreparedEvent> {
private static final Logger appLogger = LoggerFactory.getLogger(InitializationLogger.class);
@Override
public void onApplicationEvent(ApplicationEnvironmentPreparedEvent event) {
System.out.println(event.getClass());
appLogger.info(this.getClass().getName());
}
}
公共类初始化记录器实现ApplicationListener{
私有静态最终记录器appLogger=LoggerFactory.getLogger(InitializationLogger.class);
@凌驾
ApplicationEvent上的公共无效(ApplicationEnvironmentPreparedEvent事件){
System.out.println(event.getClass());
appLogger.info(this.getClass().getName());
}
}
问题是,每当我通过Intellij的SpringBoot runner或作为胖jar的命令行运行应用程序时,它都可以正常工作,但当我将其部署到外部Tomcat时,这些日志不会显示(所有其他应用程序日志都可以正常工作)
我该怎么做
我该怎么做
覆盖,类似于:
@SpringBootApplication
public class Application extends SpringBootServletInitializer {
private static final Logger appLogger = LoggerFactory.getLogger(Application.class);
// for JAR deploy:
public static void main(String[] args) {
SpringApplicationBuilder builder = configureSpringBuilder(new SpringApplicationBuilder());
builder.application().run(args);
appLogger.info("--Application Started--");
}
// for WAR deploy:
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return super.configure(configureSpringBuilder(builder));
}
// Common:
private static SpringApplicationBuilder configureSpringBuilder(SpringApplicationBuilder builder) {
System.out.println("INIT");
appLogger.info("Initializing");
builder.application().addListeners(new InitializationLogger());
builder.application().setSources(new HashSet<>(Collections.singletonList(Application.class)));
return builder;
}
}
@springboot应用程序
公共类应用程序扩展了SpringBootServletInitializer{
私有静态最终记录器appLogger=LoggerFactory.getLogger(Application.class);
//对于JAR部署:
公共静态void main(字符串[]args){
SpringApplicationBuilder=配置SpringBuilder(新的SpringApplicationBuilder());
builder.application().run(args);
appLogger.info(“--应用程序已启动--”);
}
//战争部署:
@凌驾
受保护的SpringApplicationBuilder配置(SpringApplicationBuilder){
返回super.configure(configureSpringBuilder(builder));
}
//常见的:
私有静态SpringApplicationBuilder配置SpringBuilder(SpringApplicationBuilder){
System.out.println(“INIT”);
appLogger.info(“初始化”);
builder.application().addListeners(新的InitializationLogger());
builder.application().setSources(新的HashSet(Collections.singletonList(application.class));
返回生成器;
}
}
参考资料:
你查过tomcat日志了吗?@PrabinPaudel是的,那里也没有日志