栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

日志异常分析记录

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

日志异常分析记录

1、ERROR in ch.qos.logback.core.joran.spi.Interpreter@11:86 - no applicable action for [springProperty], current ElementPath  is [[configuration][springProperty]]
    at org.springframework.boot.logging.logback.LogbackLoggingSystem.loadConfiguration(LogbackLoggingSystem.java:179)
    at org.springframework.boot.logging.AbstractLoggingSystem.initializeWithConventions(AbstractLoggingSystem.java:80)
    at org.springframework.boot.logging.AbstractLoggingSystem.initialize(AbstractLoggingSystem.java:60)
    at org.springframework.boot.logging.logback.LogbackLoggingSystem.initialize(LogbackLoggingSystem.java:132)
    at org.springframework.boot.context.logging.LoggingApplicationListener.initializeSystem(LoggingApplicationListener.java:313)
    ... 18 more

ch.qos.logback.core.joran.spi.Interpreter作用:扩展SAX DefaultHandler,根据预定义的模式调用各种操作(将xml配置文件翻译成日志对象)

异常提示:没有spring配置属性适合的action(对应logback.xml中的 springProperty 属性)

a、异常点:

xml配置:

对应代码:ch.qos.logback.core.joran.spi.EventPlayer#play,中正在解析该元素

b、为什么springProperty没有对应的Action ?

正常情况 List applicableActionList = ruleStore.matchActions(elementPath);应该是可以拿到springProperty对应的org.springframework.boot.logging.logback.SpringPropertyAction,然后进行spring属性解析的(即org.springframework.boot.logging.logback.SpringPropertyAction#getValue)

那为什么ruleStore中没有呢,分析下ch.qos.logback.core.joran.spi.Interpreter#ruleStore初始化的逻辑,断点定位解析并新增rule代码:ch.qos.logback.core.joran.GenericConfigurator#buildInterpreter

现象:加载rule的代码直接进入ch.qos.logback.classic.joran.JoranConfigurator中,并执行子类SpringBootJoranConfigurator扩展的springProperty相关性Action

未执行的代码逻辑:org.springframework.boot.logging.logback.SpringBootJoranConfigurator#addInstanceRules

c、为什么没有执行子类SpringBootJoranConfigurator的逻辑?

分析日志加载逻辑定位到:ch.qos.logback.classic.util.ContextInitializer#autoConfig

日志框架初始化看下会加载那些配置文件

发现日志上下文初始化时会自动加载这些文件,而此时spring环境的配置信息还没有加载(断点验证)

 在ch.qos.logback.classic.util.ContextInitializer#configureByResource中使用了JoranConfigurator,此时的日志加载并不依赖spring环境的,所以在解析logback.xml时才会出现上述的报错

logback-spring.xml 在Spring应用程序运行时生效(启动的时候生效)

logback.xml 非Spring应用程序,(如main函数或测试类使用)logback.xml加载早于application.properties,

PS:如果在logback.xml使用了application.properties中变量时,会获取不到导致异常,可以改成logback-spring.xml解决。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1005995.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号