【发布时间】:2018-01-10 08:43:02
【问题描述】:
我正在将旧版应用程序迁移到 Spring Boot,我遇到了以下问题:当我启动应用程序时,由于以下异常而失败:
线程“主”java.lang.IllegalStateException 中的异常:Logback 检测到配置错误:错误 ch.qos.logback.core.joran.spi.Interpreter@10:21 - 没有适用的操作 对于 [BufferedIO],当前 ElementPath 是 [[配置][appender][BufferedIO]]
ch.qos.logback.core.joran.spi.Interpreter@11:25 中的错误 - 否 [ImmediateFlush] 的适用操作,当前 ElementPath 是 [[配置][appender][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 无法解析 BufferredIO 和 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(之前是迁移之前的版本)
【问题讨论】:
-
显示您的 logback.xml 会有所帮助。
-
除了发布你的
logback.xml,你能不能说明一下你使用的是什么版本的Logback? -
@Ondřej Xicht Světlík 我怎么会忘记,谢谢,补充:)
-
@glytching 当然,感谢您的注意,请更新问题
-
显然,在 1.1.7 中,这两个选项都不存在。我在 1.2.3 中找到了 immediateFlush,在 0.9.7 中找到了 bufferedIO 或类似的东西。我不知道文档基于哪个版本,但最后一次更新的日期(2008 年与 0.9.x 版本相对应)为我们提供了线索。 1.1.7 来自 2016 年,1.2.3 来自 2017 年。
标签: java logging logback logback-classic