我无法在对ApplicationListener
感兴趣的ApplicationStartedEvent
登录的控制台中收到消息。我找到了原因。但我不明白为什么春天这样做。我发现其中有一个名为LoggingApplicationListener
的{{1}}。this.loggingSystem.beforeInitialize()
beforeInitialize()
已将turboFilter
添加到logback
,turboFilter
返回拒绝在他的decide()
。
我知道一点英语,请帮帮我
答案 0 :(得分:1)
Spring Boot会在创建ApplicationContext
或初始化LoggingSystem
之前很早触发一些事件。后者的原因是您可以使用application.properties
中的密钥配置日志记录。
Spring Boot需要首先读取Environment
,然后使用这些密钥让日志系统自行配置。在此期间,没有启用日志记录,因此如果您在自己的监听器中使用它,则不会发生任何事情。
我们gave a university session last November就这些主题提出了section on application events。
小心ApplicationStartedEvent
。该名称具有误导性,它实际上是我们发射的第一个事件(我们应该将此命名为ApplicationStartingEvent
和we've done that recently)。如果要检查应用程序是否已完全启动,您可能需要使用ApplicationReadyEvent
。此时已初始化日志记录系统,因此您可以安全地使用记录器。