• 【异常】ERROR in ch.qos.logback.core.joran.spi.Interpreter@159:22


    一、异常信息

    Exception in thread "restartedMain" java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49)
    Caused by: org.springframework.context.ApplicationContextException: Failed to start bean 'outputBindingLifecycle'; nested exception is java.lang.IllegalStateException: java.lang.IllegalStateException: Logback configuration error detected: 
    ERROR in ch.qos.logback.core.joran.spi.Interpreter@159:22 - no applicable action for [charset], current ElementPath  is [[configuration][appender][encoder][charset]]
        at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:184)
        at org.springframework.context.support.DefaultLifecycleProcessor.access$200(DefaultLifecycleProcessor.java:52)
        at org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.start(DefaultLifecycleProcessor.java:356)
        at org.springframework.context.support.DefaultLifecycleProcessor.startBeans(DefaultLifecycleProcessor.java:157)
        at org.springframework.context.support.DefaultLifecycleProcessor.onRefresh(DefaultLifecycleProcessor.java:121)
        at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:885)
        at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.finishRefresh(ServletWebServerApplicationContext.java:161)
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:553)
        at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:140)
        at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:759)
        at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:395)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:327)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:1255)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:1243)
        at com.zbq.user.ZbqUserApplication.main(ZbqUserApplication.java:14)
        ... 5 more
    Caused by: java.lang.IllegalStateException: java.lang.IllegalStateException: Logback configuration error detected: 
    ERROR in ch.qos.logback.core.joran.spi.Interpreter@159:22 - no applicable action for [charset], current ElementPath  is [[configuration][appender][encoder][charset]]
        at org.springframework.boot.context.logging.LoggingApplicationListener.initializeSystem(LoggingApplicationListener.java:276)
        at org.springframework.boot.context.logging.LoggingApplicationListener.initialize(LoggingApplicationListener.java:237)
        at org.springframework.boot.context.logging.LoggingApplicationListener.onApplicationEnvironmentPreparedEvent(LoggingApplicationListener.java:200)
        at org.springframework.boot.context.logging.LoggingApplicationListener.onApplicationEvent(LoggingApplicationListener.java:173)
        at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:172)
        at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:165)
        at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139)
        at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:127)
        at org.springframework.boot.context.event.EventPublishingRunListener.environmentPrepared(EventPublishingRunListener.java:74)
        at org.springframework.boot.SpringApplicationRunListeners.environmentPrepared(SpringApplicationRunListeners.java:54)
        at org.springframework.boot.SpringApplication.prepareEnvironment(SpringApplication.java:358)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:317)
        at org.springframework.boot.builder.SpringApplicationBuilder.run(SpringApplicationBuilder.java:137)
        at org.springframework.cloud.stream.binder.DefaultBinderFactory.getBinderInstance(DefaultBinderFactory.java:206)
        at org.springframework.cloud.stream.binder.DefaultBinderFactory.getBinder(DefaultBinderFactory.java:139)
        at org.springframework.cloud.stream.binding.BindingService.getBinder(BindingService.java:308)
        at org.springframework.cloud.stream.binding.BindingService.bindProducer(BindingService.java:208)
        at org.springframework.cloud.stream.binding.BindableProxyFactory.bindOutputs(BindableProxyFactory.java:252)
        at org.springframework.cloud.stream.binding.OutputBindingLifecycle.doStartWithBindable(OutputBindingLifecycle.java:46)
        at java.util.Iterator.forEachRemaining(Iterator.java:116)
        at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
        at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:580)
        at org.springframework.cloud.stream.binding.AbstractBindingLifecycle.start(AbstractBindingLifecycle.java:47)
        at org.springframework.cloud.stream.binding.OutputBindingLifecycle.start(OutputBindingLifecycle.java:29)
        at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:181)
        ... 19 more
    Caused by: java.lang.IllegalStateException: Logback configuration error detected: 
    ERROR in ch.qos.logback.core.joran.spi.Interpreter@159:22 - no applicable action for [charset], current ElementPath  is [[configuration][appender][encoder][charset]]
        at org.springframework.boot.logging.logback.LogbackLoggingSystem.loadConfiguration(LogbackLoggingSystem.java:166)
        at org.springframework.boot.logging.AbstractLoggingSystem.initializeWithSpecificConfig(AbstractLoggingSystem.java:67)
        at org.springframework.boot.logging.AbstractLoggingSystem.initialize(AbstractLoggingSystem.java:57)
        at org.springframework.boot.logging.logback.LogbackLoggingSystem.initialize(LogbackLoggingSystem.java:114)
        at org.springframework.boot.context.logging.LoggingApplicationListener.initializeSystem(LoggingApplicationListener.java:269)
        ... 43 more

    二、原因分析

    从异常信息no applicable action for [charset]可以看出,是因为charset标签不可用导致,可能是logback版本的原因。

    我的配置是这样的,存在charset标签:

        <!-- ALL -->
        <appender name="FILE-ALL" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <!--日志文件的路径及文件名-->
            <!--被写入的文件名,可以是相对目录,也可以是绝对目录,如果上级目录不存在会自动创建,没有默认值-->
            <file>${logback.path}/${application.name}-all.log</file>
            <!-- 如果 true,事件被追加到现存文件尾部。如果 false,清空现存文件.默认为 true -->
            <append>true</append>
            <!--临界值过滤器,过滤掉低于指定临界值的日志。当日志级别等于或高于临界值时,过滤器返回NEUTRAL;当日志级别低于临界值时,日志会被拒绝-->
            <!-- 此日志文件只记录INFO级别的 -->
            <!--<filter class="ch.qos.logback.classic.filter.ThresholdFilter">-->
                <!--<level>INFO</level>-->
            <!--</filter>-->
            <!--当发生滚动时,决定 RollingFileAppender 的行为-->
            <!--日志记录器的滚动策略,按日期,按大小记录,涉及文件移动和重命名-->
            <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
                <!-- 归档的日志文件的路径,例如今天是2018-09-21日志,当前写的日志文件路径为file节点指定,可以将此文件与file指定文件路径设置为不同路径,从而将当前日志文件或归档日志文件置不同的目录。
                而2018-09-21的归档日志文件在由fileNamePattern指定。%d{yyyy-MM-dd}指定日期格式,%i指定索引 -->
                <!--即file和fileNamePattern同时制定,当天日志名由file决定,前一天的文件名将自动改为fileNamePattern的值-->
                <!-- 若要加一层时间目录 <fileNamePattern>${logback.path}/%d{yyyy-MM-dd,aux}/${logback.info.filename}.%i.log</fileNamePattern>-->
                <!--<fileNamePattern>${logback.path}/${application.name}-info.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>-->
                <fileNamePattern>${logback.path}/${application.name}-all.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
                <!--控制被保留的归档文件的最大数量,超出数量就删除旧文件-->
                <!--日志文件保留天数 -->
                <maxHistory>${logback.max-history}</maxHistory>
                <!--指定文件的大小-->
                <maxFileSize>${logback.max-file-size}</maxFileSize>
            </rollingPolicy>
            <!--负责两件事,一是把日志信息转换成字节数组,二是把字节数组写入到输出流-->
            <!-- 日志文件的格式 -->
            <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
                <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
                <pattern>${logback.file-pattern}</pattern>
                <!--日志字符编码格式-->
                <charset>${logback.charset}</charset>
            </encoder>
        </appender>

    三、解决方案

    将logback配置中,charset标签去掉就可以了

  • 相关阅读:
    谜题48:我所得到的都是静态的
    谜题47:啊呀!我的猫变成狗了
    谜题46:令人混淆的构造器案例
    谜题45:令人疲惫不堪的测验
    谜题44:切掉类
    Python--csv文件处理
    Python装饰器
    Python单例模式
    <<Senium2自动化测试>>读书笔记二
    python之内置函数
  • 原文地址:https://www.cnblogs.com/756623607-zhang/p/11484033.html
Copyright © 2020-2023  润新知