Logback配置

时间:2018-01-10 08:43:02

标签: java logging logback logback-classic

我将遗留应用迁移到Spring Boot并且我遇到了以下问题:当我启动应用时,由于以下异常而失败:

  

线程中的异常" main" java.lang.IllegalStateException:Logback   检测到配置错误:ERROR in   ch.qos.logback.core.joran.spi.Interpreter@10:21 - 没有适用的行动   对于[BufferedIO],当前的ElementPath是   [[结构] [附加器] [BufferedIO]]
  ch.qos.logback.core.joran.spi.Interpreter@11中的错误:25 - 否   适用于[ImmediateFlush]的操作,当前的ElementPath是   [[结构] [附加器] [ImmediateFlush]]
  在   org.springframework.boot.logging.logback.LogbackLoggingSystem.loadConfiguration(LogbackLoggingSystem.java:161)   在   org.springframework.boot.logging.logback.LogbackLoggingSystem.reinitialize(LogbackLoggingSystem.java:207)   在   org.springframework.boot.logging.AbstractLoggingSystem.initializeWithConventions(AbstractLoggingSystem.java:65)   在   org.springframework.boot.logging.AbstractLoggingSystem.initialize(AbstractLoggingSystem.java:50)   在   org.springframework.boot.logging.logback.LogbackLoggingSystem.initialize(LogbackLoggingSystem.java:114)   在   org.springframework.boot.logging.LoggingApplicationListener.initializeSystem(LoggingApplicationListener.java:299)   在   org.springframework.boot.logging.LoggingApplicationListener.initialize(LoggingApplicationListener.java:272)   在   org.springframework.boot.logging.LoggingApplicationListener.onApplicationEnvironmentPreparedEvent(LoggingApplicationListener.java:235)   在   org.springframework.boot.logging.LoggingApplicationListener.onApplicationEvent(LoggingApplicationListener.java:208)   在   org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:167)   在   org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139)   在   org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:122)   在   org.springframework.boot.context.event.EventPublishingRunListener.environmentPrepared(EventPublishingRunListener.java:72)   在   org.springframework.boot.SpringApplicationRunListeners.environmentPrepared(SpringApplicationRunListeners.java:54)   在   org.springframework.boot.SpringApplication.prepareEnvironment(SpringApplication.java:338)   在   org.springframework.boot.SpringApplication.run(SpringApplication.java:309)   在   org.springframework.boot.SpringApplication.run(SpringApplication.java:1187)   在   org.springframework.boot.SpringApplication.run(SpringApplication.java:1176)   在com.some_company.SomeApp.main(SomeApp.java:28)

因此,Logback无法解析BuferredIO和ImmediateFlush属性。我试图看到他们的docs,但似乎已经过时了,因为它说存在这样的属性+我已经找到了,例如对于OutputStreamAppender,它根据文档应该没有immediateFlush属性。

如果Logback现在仍然支持以下属性,我找不到任何信息。你能帮助并提出一些关于我如何能够获得与以前的属性相同的结果的想法吗?也许他们在其他地方:)

非常感谢!:)

更新:添加Logback配置快照:

    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <File>${logdir}/some-app.log</File>
        <Append>true</Append>        
        <BufferedIO>false</BufferedIO>
        <ImmediateFlush>true</ImmediateFlush>
        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
            <FileNamePattern>${logdir}/archive-some-app.%i.log.zip</FileNamePattern>
            <MinIndex>1</MinIndex>
            <MaxIndex>10</MaxIndex>
        </rollingPolicy>

        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>20MB</MaxFileSize>
        </triggeringPolicy>

        <encoder class="net.logstash.logback.encoder.LogstashEncoder">
            <fieldNames>
                <timestamp>timestamp</timestamp>
            </fieldNames>
        </encoder>
    </appender>

Logback版本是1.1.7(以前在迁移之前)

1 个答案:

答案 0 :(得分:1)

虽然ImmediateFlush是最新版Logback中OutputStreamAppenderRollingFileAppender扩展)的有效配置属性(因此在最新文档中引用),但这只是添加到2017年2月OutputStreamAppender here。因此,immediateFlush不是OutputStreamAppender的有效属性(因此在{1.1}}中无法访问)在v1.1.7中

这解释了以下错误:

  

[ImmediateFlush]没有适用的操作,当前的ElementPath是[[configuration] [appender] [ImmediateFlush]]

BufferedIO是Logback不再支持的旧配置属性。

这解释了以下错误:

  

[BufferedIO]没有适用的操作,当前的ElementPath是[[configuration] [appender] [BufferedIO]]

总之,您可以考虑升级到最新的Logback,然后删除RollingFileAppender。或者,继续使用v1.1.7并删除这两者:<BufferedIO>false</BufferedIO><BufferedIO>false</BufferedIO>