看过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属性
都在这个类里面里面进行的
相关推荐
标题中的“【飞天奔月出品】windows版nginx 快速操控神器(启动start,关闭stop,重启restart) 批处理”指的是一个专为Windows操作系统设计的Nginx管理工具,它通过批处理脚本实现了Nginx服务的便捷启动、停止和重启...
3. **财务分析**:深入解析公司的资产负债表、利润表和现金流量表,评估公司的财务健康状况和盈利能力。 4. **市场与竞争**:分析所在行业的市场环境,竞争对手的情况,以及公司市场份额的变化。 5. **产品与服务**...
奔月生物:2021年半年度报告.PDF
从文化视角分析,《奔月》揭示了中国传统文化中的某些消极因素。鲁迅将国民性概括为“愚弱”,表现为缺乏是非观念和不敢抗争的懦弱。嫦娥的冷漠、老太太的愚昧、逢蒙的狡诈,都在一定程度上映射了这种国民性。鲁迅借...
【山东奔月生物科技股份有限公司2019年半年度报告】是该公司在当年的一个重要财务信息披露文件,旨在向公众和投资者展示公司在前六个月的经营状况、财务数据和重大事件。以下是对报告中关键知识点的详细解析: 1. *...
HTML5奔月游戏是一款完全基于HTML5技术开发的互动小游戏,玩家可以扮演一只兔子,目标是在游戏中尽可能地收集月饼并安全抵达月球。这款游戏的亮点在于其无需任何额外的插件或软件支持,只需浏览器就能运行,这得益于...
手绘实例:奔月 Photoshop3 图片处理 高级手绘技术技巧
《H5游戏源码解析:奔月游戏》 在当今数字化时代,HTML5(简称H5)技术以其跨平台、轻量级、易部署的特点,成为制作网页游戏的热门选择。"奔月游戏"作为一款H5游戏,其源码为我们提供了一窥H5游戏开发的窗口。本文...
3. **动画帧更新**:游戏的连续动画通常通过定时器(如`setInterval()`或`requestAnimationFrame()`)来实现,每帧进行必要的计算和渲染更新。 4. **物理引擎**:为了模拟火箭兔的跳跃、飞行等动作,游戏可能内置了...
7. **CSS3动画**:虽然主要用Canvas进行游戏绘制,但CSS3动画也可以用于某些非关键的游戏元素,如菜单、过渡效果等,以增强视觉体验。 8. **响应式设计**:HTML5支持响应式设计,这意味着游戏可以适应不同尺寸的...
【长娥奔月模板下载TIF】是一个与网页设计相关的资源,主要提供了一种以"长娥奔月"为主题的网页模版。这个模版可能是为了庆祝中国传统节日,如中秋节,或者用于讲述中国古老的神话故事。"长娥奔月"是中国文化中的...
【标题】"小游戏源码-火贱兔奔月.rar" 提供的是一个小型游戏的源代码,名为"火贱兔奔月"。这类源码通常用于教学、学习或游戏开发者的参考,帮助开发者理解游戏的基本架构和编程逻辑。 【描述】"小游戏源码-火贱兔...
这篇文档介绍了如何使用Adobe Photoshop软件创作一张奔月女孩的梦幻艺术照片效果。以下是详细步骤: 1. **新建文件与导入素材**: - 首先创建一个新文件,大小与素材1相同,命名为"奔月女孩"。 - 然后打开素材1,...
游戏源码分享下载 --- hjby.zipHTML5小游戏【火贱兔奔月--425款经典优秀H5小游戏合集】游戏源码分享下载 --- hjby.zipHTML5小游戏【火贱兔奔月--425款经典优秀H5小游戏合集】游戏源码分享下载 --- hjby.zipHTML5小...
《鲁迅的《奔月》:颠覆传统,开创审美新向度》 鲁迅的短篇小说《奔月》是其《故事新编》中的一篇,它颠覆了我们对古代神话的传统认知,尤其对嫦娥这一角色的刻画,使得这篇作品在文学史上占据了独特的地位。鲁迅...
开发者可以通过阅读和分析源代码,了解如何结合HTML5的Canvas、JavaScript和CSS3来构建一个完整的互动游戏,同时也能学习到游戏逻辑设计、用户交互处理和资源管理等方面的知识。对于想要提升自己在HTML5游戏开发技能...
HTML5兔子奔月吃月饼游戏源码是一款基于HTML5技术开发的互动小游戏,适用于网页环境,无需额外插件即可在现代浏览器中运行。这款游戏利用了HTML5的核心特性,包括Canvas绘图、JavaScript编程以及可能涉及的Web Audio...
【标题】"H5小游戏源码 火贱兔奔月.zip" 提供的是一个基于HTML5技术开发的小游戏的完整源代码。HTML5是一种在网页上创建动态、交互式内容的标记语言,它极大地扩展了传统HTML的能力,使得开发者能够创建更丰富、更具...
HTML5是一种先进的网页开发技术,它极大地扩展了Web应用程序的功能,使得开发者能够创建富媒体、交互性强的网页应用。...通过分析和修改这个游戏,可以深入理解这些技术在实际项目中的应用,并提升自己的编程技能。
这是一个关于Web前端开发的知识点详解,主要聚焦在HTML、CSS和JavaScript这三门核心技术上,以"兔子奔月吃月饼游戏源码"为实例进行解析。 首先,HTML(HyperText Markup Language)是构建网页的基础,它定义了网页...