【问题标题】:Getting java.lang.IllegalStateException: Logback configuration error detected error获取 java.lang.IllegalStateException: Logback 配置错误检测到错误
【发布时间】:2018-08-06 01:17:23
【问题描述】:

Logback 在我的 Spring Boot 应用程序中引发以下错误

java.lang.IllegalStateException:检测到 Logback 配置错误: ch.qos.logback.core.joran.spi.Interpreter@3:16 中的错误 - [Appenders] 没有适用的操作,当前 ElementPath 是 [[Configuration][Appenders]] ch.qos.logback.core.joran.spi.Interpreter@4:53 中的错误 - [Console] 没有适用的操作,当前 ElementPath 是 [[Configuration][Appenders][Console]] ch.qos.logback.core.joran.spi.Interpreter@5:92 中的错误 - [PatternLayout] 没有适用的操作,当前 ElementPath 是 [[Configuration][Appenders][Console][PatternLayout]] ch.qos.logback.core.joran.spi.Interpreter@9:49 中的错误 - [RollingFile] 没有适用的操作,当前 ElementPath 是 [[Configuration][Appenders][RollingFile]] ch.qos.logback.core.joran.spi.Interpreter@10:28 中的错误 - [PatternLayout] 没有适用的操作,当前 ElementPath 是 [[Configuration][Appenders][RollingFile][PatternLayout]] ch.qos.logback.core.joran.spi.Interpreter@11:26 中的错误 - [pattern] 没有适用的操作,当前 ElementPath 是 [[Configuration][Appenders][RollingFile][PatternLayout][pattern]] ch.qos.logback.core.joran.spi.Interpreter@13:23 中的错误 - [Policies] 没有适用的操作,当前 ElementPath 是 [[Configuration][Appenders][RollingFile][Policies]] ch.qos.logback.core.joran.spi.Interpreter@14:59 中的错误 - [SizeBasedTriggeringPolicy] 没有适用的操作,当前 ElementPath 是 [[Configuration][Appenders][RollingFile][Policies][SizeBasedTriggeringPolicy]] ch.qos.logback.core.joran.spi.Interpreter@16:50 中的错误 - [DefaultRolloverStrategy] 没有适用的操作,当前 ElementPath 是 [[Configuration][Appenders][RollingFile][DefaultRolloverStrategy]] ch.qos.logback.core.joran.spi.Interpreter@20:14 中的错误 - [Loggers] 没有适用的操作,当前 ElementPath 是 [[Configuration][Loggers]] ch.qos.logback.core.joran.spi.Interpreter@21:29 中的错误 - [Root] 没有适用的操作,当前 ElementPath 是 [[Configuration][Loggers][Root]] ch.qos.logback.core.joran.spi.Interpreter@22:46 中的错误 - [AppenderRef] 没有适用的操作,当前 ElementPath 是 [[Configuration][Loggers][Root][AppenderRef]] ch.qos.logback.core.joran.spi.Interpreter@23:42 中的错误 - [AppenderRef] 没有适用的操作,当前 ElementPath 是 [[Configuration][Loggers][Root][AppenderRef]] ch.qos.logback.core.joran.spi.Interpreter@25:76 中的错误 - [Logger] 没有适用的操作,当前 ElementPath 是 [[Configuration][Loggers][Logger]] ch.qos.logback.core.joran.spi.Interpreter@26:44 中的错误 - [AppenderRef] 没有适用的操作,当前 ElementPath 是 [[Configuration][Loggers][Logger][AppenderRef]] ch.qos.logback.core.joran.spi.Interpreter@27:40 中的错误 - [AppenderRef] 没有适用的操作,当前 ElementPath 是 [[Configuration][Loggers][Logger][AppenderRef]] ch.qos.logback.core.joran.spi.Interpreter@29:68 中的错误 - [Logger] 没有适用的操作,当前 ElementPath 是 [[Configuration][Loggers][Logger]] ch.qos.logback.core.joran.spi.Interpreter@30:44 中的错误 - [AppenderRef] 没有适用的操作,当前 ElementPath 是 [[Configuration][Loggers][Logger][AppenderRef]] 在 org.springframework.boot.logging.logback.LogbackLoggingSystem.loadConfiguration(LogbackLoggingSystem.java:162) 在 org.springframework.boot.logging.AbstractLoggingSystem.initializeWithSpecificConfig(AbstractLoggingSystem.java:66) 在 org.springframework.boot.logging.AbstractLoggingSystem.initialize(AbstractLoggingSystem.java:56) 在 org.springframework.boot.logging.logback.LogbackLoggingSystem.initialize(LogbackLoggingSystem.java:115) 在 org.springframework.boot.logging.LoggingApplicationListener.initializeSystem(LoggingApplicationListener.java:308) 在 org.springframework.boot.logging.LoggingApplicationListener.initialize(LoggingApplicationListener.java:276) 在 org.springframework.boot.logging.LoggingApplicationListener.onApplicationEnvironmentPreparedEvent(LoggingApplicationListener.java:239) 在 org.springframework.boot.logging.LoggingApplicationListener.onApplicationEvent(LoggingApplicationListener.java:212) 在 org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:172) 在 org.springframework.enter code herecontext.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:165) 在 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:74) 在 org.springframework.boot.SpringApplicationRunListeners.environmentPrepared(SpringApplicationRunListeners.java:54) 在 org.springframework.boot.SpringApplication.prepareEnvironment(SpringApplication.java:325) 在 org.springframework.boot.SpringApplication.run(SpringApplication.java:296) 在 org.springframework.boot.SpringApplication.run(SpringApplication.java:1118) 在 org.springframework.boot.SpringApplication.run(SpringApplication.java:1107)

我的 logback 配置是:

<Configuration status="WARN">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
        </Console>
        <RollingFile name="RollingFile" fileName="${sys:home}/logs/log"
            filePattern="${sys:home}/logs/mylog-%i.log" bufferedIO="false"
            immediateFlush="true" append="true">
            <PatternLayout>
                <pattern>%d %p [%t] %c{1.} %m%n</pattern>
            </PatternLayout>
            <Policies>
                <SizeBasedTriggeringPolicy size="20 MB" />
            </Policies>
            <DefaultRolloverStrategy max="100" />
        </RollingFile>
    </Appenders>

    <Loggers>
        <Root level="error">
            <AppenderRef ref="RollingFile" />
            <AppenderRef ref="Console" />
        </Root>
        <Logger name="org.springframework" level="info" additivity="false">
            <AppenderRef ref="RollingFile"></AppenderRef>
            <AppenderRef ref="Console"></AppenderRef>
        </Logger>
        <Logger name="com.myproj" level="debug" additivity="false">
            <AppenderRef ref="RollingFile"></AppenderRef>
        </Logger>
    </Loggers>
</Configuration>

【问题讨论】:

标签: java spring spring-boot logging logback


【解决方案1】:

这可能是 log4j2 配置。为了支持它,你的 Spring Boot pom 文件必须更新如下:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-logging</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>

在此处查看更多详细信息:https://docs.spring.io/spring-boot/docs/current/reference/html/howto.html#howto-logging(第 8.2 节为 Log4j 配置日志记录)。

【讨论】:

  • 在处理 logback 时遇到了同样的问题。对我来说,为当前版本添加实现依赖项无需设置排除项即可。
  • @MMascarin - 请您详细解释一下做了什么?我从过去 3 天开始就遇到了这个问题并且无法解决:/ 请帮助
  • 我想我只是尝试了 mp31415 的解决方案(只是单独声明 spring-boot-starter-log4j2)并意识到我实际上不需要排除它就可以工作。
【解决方案2】:

错误可以通过使用解决

<appender name="Console"
            class="ch.qos.logback.core.ConsoleAppender">

而不是

<Console name="Console" target="SYSTEM_OUT">

Link for reference

下面是你如何做的参考:-

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan = "true">

        <property name="LOGS" value="./logs" />
        <property resource ="application.yml"/>
        <springProperty name="NAME" source="spring.application.name" />
        <appender name="Console"
            class="ch.qos.logback.core.ConsoleAppender">
            <layout class="ch.qos.logback.classic.PatternLayout">
                <Pattern>
                    %black(%d{ISO8601}) %highlight(%-5level) [%blue(%t)] %yellow(%C{1.}): %msg%n%throwable
                </Pattern>
            </layout>
        </appender>
        
        <appender name="RollingFile"
        class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOGS}/${NAME}.log</file>
        <encoder
            class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <Pattern>%d %p %C{1.} [%t] %m%n</Pattern>
        </encoder>

        <rollingPolicy
            class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- rollover daily and when the file reaches 10 MegaBytes -->
            <fileNamePattern>${LOGS}/archived/spring-boot-logger-%d{yyyy-MM-dd}.%i.log
            </fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy
                class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>10MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
    </appender>
     
    <root level="info">
        <appender-ref ref="RollingFile" />
        <appender-ref ref="Console" />
    </root>

    <logger name="com.ms" level="trace" additivity="false">
        <appender-ref ref="RollingFile" />
        <appender-ref ref="Console" />
    </logger>
    
    <logger name="org.springframework.core.env.PropertySourcesPropertyResolver" level="trace" additivity="true">
    </logger>

</configuration>

【讨论】:

    猜你喜欢
    • 2020-11-01
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-13
    • 1970-01-01
    • 2021-05-01
    相关资源
    最近更新 更多