Spring-boot:尽管日志级别仍记录下来的servlet环境



最近从Spring-Boot 1.5.6.Release升级到1.5.8.Release

这样做,我们注意到环境已被记录为"调试"和类别"标准服务环境"。

但是,application.properties文件未在调试级别指定日志记录。即使明确设置该类的警告或错误也不会有所作为。

进行日志记录的代码位于org.springframework.core.env.abstractenvironment的构造函数中:

public AbstractEnvironment() {
        customizePropertySources(this.propertySources);
        if (logger.isDebugEnabled()) {
            logger.debug("Initialized " + getClass().getSimpleName() + " with PropertySources " + this.propertySources);
        }
    }

不启用调试,但它会登录。似乎在读取application.properties的日志级别之前,它似乎正在这样做。

对此有任何解释吗?

应用程序。

logging.level.root=INFO
logging.level.com.mycompany=DEBUG

在代码中,我看到了有关推迟日志初始化的评论。

我通过创建自己的WebApplicationInitializer类来抑制此错误,在该类中,我将其明确设置为Info的日志级别

class MyWebApplicationInitializer implements WebApplicationInitializer{
    @Override
    void onStartup(ServletContext servletContext) throws ServletException {
        String category = 'org.springframework.web.context.support.StandardServletEnvironment'
        ch.qos.logback.classic.Logger logbackLogger = (ch.qos.logback.classic.Logger) org.slf4j.LoggerFactory.getLogger(category)
        logbackLogger.setLevel(ch.qos.logback.classic.Level.INFO)
        logbackLogger.info("Setting log level in ${this.class.name}, for ${logbackLogger.name}, to ${logbackLogger.level}")
}

感觉就像是黑客。因此,如果有人有更好的答案,请发布。

相关内容

最新更新