SpringBoot--我无法在控制台中获取对ApplicationStartedEvent感兴趣的ApplicationListener中的消息

时间:2016-12-27 05:47:52

标签: spring-boot

我无法在对ApplicationListener感兴趣的ApplicationStartedEvent登录的控制台中收到消息。我找到了原因。但我不明白为什么春天这样做。我发现其中有一个名为LoggingApplicationListener的{​​{1}}。this.loggingSystem.beforeInitialize() beforeInitialize()已将turboFilter添加到logbackturboFilter返回拒绝在他的decide()

我知道一点英语,请帮帮我

1 个答案:

答案 0 :(得分:1)

Spring Boot会在创建ApplicationContext或初始化LoggingSystem之前很早触发一些事件。后者的原因是您可以使用application.properties中的密钥配置日志记录。

Spring Boot需要首先读取Environment,然后使用这些密钥让日志系统自行配置。在此期间,没有启用日志记录,因此如果您在自己的监听器中使用它,则不会发生任何事情。

我们gave a university session last November就这些主题提出了section on application events

小心ApplicationStartedEvent。该名称具有误导性,它实际上是我们发射的第一个事件(我们应该将此命名为ApplicationStartingEventwe've done that recently)。如果要检查应用程序是否已完全启动,您可能需要使用ApplicationReadyEvent。此时已初始化日志记录系统,因此您可以安全地使用记录器。