看过logback配置语法(Configuration file syntax)的伙伴们,也许知道,logback配置文件里面是可以写 类似于jsp里面的el 表达式的,
比如
.... <property name="projectName" value="webapp-springmvc3"></property> .... <appender name="RollingFile" class="ch.qos.logback.core.rolling.RollingFileAppender"> <File>D:\\logs\\feilong\\${projectName}\\log.log</File> ......... </appender>
像上面 ${projectName} 的写法, 在logback里面叫做 variables
有兴趣看手册的同学,可以看这里
http://logback.qos.ch/manual/configuration.html#variableSubstitution
那么logback是如何做到解析这样的variables的呢?以及logback 解析这些variables 使用的值有哪些呢?
真相只有一个,源码面前了无秘密
先参见,logback的启动以及加载配置文件
【飞天奔月出品】剖析logback之logback启动
【飞天奔月出品】logback1.1.13配置文件加载顺序
跟踪代码,发现解析变量是在 这里执行的
ch.qos.logback.core.subst.NodeToStringTransformer.lookupKey(String)
private String lookupKey(String key) { String value = propertyContainer0.getProperty(key); if (value != null) return value; if (propertyContainer1 != null) { value = propertyContainer1.getProperty(key); if (value != null) return value; } value = OptionHelper.getSystemProperty(key, null); if (value != null) return value; value = OptionHelper.getEnv(key); if (value != null) { return value; } return null; }
转成流程图
上面提到的 InterpretationContext 以及 LoggerContext ,涉及到logback variables scope,
参见:
http://logback.qos.ch/manual/configuration.html#scopes
此外 ch.qos.logback.core.util.OptionHelper 提供了logback核心工具类,
ch.qos.logback.core.util.OptionHelper.getEnv(String) 拿到系统环境变量
ch.qos.logback.core.util.OptionHelper.getSystemProperty(String) 拿到JVM属性
都在这个类里面里面进行的
相关推荐
NULL 博文链接:https://feitianbenyue.iteye.com/blog/1828929
奔月生物:2021年半年度报告.PDF
鲁迅《奔月》作品分析.pdf
奔月生物:2021年半年度报告.rar
奔月生物:2019年半年度报告.PDF
手绘实例:奔月 Photoshop3 图片处理 高级手绘技术技巧
插件描述:纯HTML5兔子奔月吃月饼游戏,可分享到朋友圈. 参考示例:http://www.jq22.com/jquery-info6154
HTML5兔子奔月吃月饼游戏源码
火箭兔奔月HTML5游戏源码,运行需要服务器环境,已经反复测试,放心使用。
长娥奔月模板下载TIF
析鲁迅《奔月》.docx
初中语文文摘生活且看嫦娥咋奔月
HTML5兔子奔月吃月饼游戏源码.zip
[鲁迅]析鲁迅《奔月》.docx
jfreechart-1.0.14-javadocs chm格式 因为带有目录索引,所以打成rar 包上传 希望大家喜欢 --create by 飞天奔月
小游戏源码-火贱兔奔月.rar
Photoshop合成奔月女孩梦幻艺术照片效果
专题嫦娥二号成功发射开创奔月新纪元
HTML5实现兔子中秋奔月吃月饼游戏源码.zip