`

【飞天奔月出品】剖析logback3:变量解析(parse variables)

    博客分类:
  • log
阅读更多

看过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属性

  

都在这个类里面里面进行的



 

 

  • 大小: 14.8 KB
  • 大小: 22.3 KB
  • 大小: 26.3 KB
0
0
分享到:
评论

相关推荐

    【飞天奔月出品】windows版nginx 快速操控神器(启动start,关闭stop,重启restart) 批处理

    标题中的“【飞天奔月出品】windows版nginx 快速操控神器(启动start,关闭stop,重启restart) 批处理”指的是一个专为Windows操作系统设计的Nginx管理工具,它通过批处理脚本实现了Nginx服务的便捷启动、停止和重启...

    奔月生物:2021年半年度报告.rar

    3. **财务分析**:深入解析公司的资产负债表、利润表和现金流量表,评估公司的财务健康状况和盈利能力。 4. **市场与竞争**:分析所在行业的市场环境,竞争对手的情况,以及公司市场份额的变化。 5. **产品与服务**...

    奔月生物:2021年半年度报告.PDF

    奔月生物:2021年半年度报告.PDF

    鲁迅《奔月》作品分析.pdf

    从文化视角分析,《奔月》揭示了中国传统文化中的某些消极因素。鲁迅将国民性概括为“愚弱”,表现为缺乏是非观念和不敢抗争的懦弱。嫦娥的冷漠、老太太的愚昧、逢蒙的狡诈,都在一定程度上映射了这种国民性。鲁迅借...

    奔月生物:2019年半年度报告.PDF

    【山东奔月生物科技股份有限公司2019年半年度报告】是该公司在当年的一个重要财务信息披露文件,旨在向公众和投资者展示公司在前六个月的经营状况、财务数据和重大事件。以下是对报告中关键知识点的详细解析: 1. *...

    HTML5奔月游戏

    HTML5奔月游戏是一款完全基于HTML5技术开发的互动小游戏,玩家可以扮演一只兔子,目标是在游戏中尽可能地收集月饼并安全抵达月球。这款游戏的亮点在于其无需任何额外的插件或软件支持,只需浏览器就能运行,这得益于...

    手绘实例:奔月 Photoshop3 图片处理 高级手绘技术技巧.doc

    手绘实例:奔月 Photoshop3 图片处理 高级手绘技术技巧

    H5游戏源码 奔月游戏.zip

    《H5游戏源码解析:奔月游戏》 在当今数字化时代,HTML5(简称H5)技术以其跨平台、轻量级、易部署的特点,成为制作网页游戏的热门选择。"奔月游戏"作为一款H5游戏,其源码为我们提供了一窥H5游戏开发的窗口。本文...

    火箭兔奔月HTML5游戏源码

    3. **动画帧更新**:游戏的连续动画通常通过定时器(如`setInterval()`或`requestAnimationFrame()`)来实现,每帧进行必要的计算和渲染更新。 4. **物理引擎**:为了模拟火箭兔的跳跃、飞行等动作,游戏可能内置了...

    HTML5奔月游戏 源码.zip

    7. **CSS3动画**:虽然主要用Canvas进行游戏绘制,但CSS3动画也可以用于某些非关键的游戏元素,如菜单、过渡效果等,以增强视觉体验。 8. **响应式设计**:HTML5支持响应式设计,这意味着游戏可以适应不同尺寸的...

    长娥奔月模板下载TIF

    【长娥奔月模板下载TIF】是一个与网页设计相关的资源,主要提供了一种以"长娥奔月"为主题的网页模版。这个模版可能是为了庆祝中国传统节日,如中秋节,或者用于讲述中国古老的神话故事。"长娥奔月"是中国文化中的...

    小游戏源码-火贱兔奔月.rar

    【标题】"小游戏源码-火贱兔奔月.rar" 提供的是一个小型游戏的源代码,名为"火贱兔奔月"。这类源码通常用于教学、学习或游戏开发者的参考,帮助开发者理解游戏的基本架构和编程逻辑。 【描述】"小游戏源码-火贱兔...

    Photoshop合成奔月女孩梦幻艺术照片效果.doc

    这篇文档介绍了如何使用Adobe Photoshop软件创作一张奔月女孩的梦幻艺术照片效果。以下是详细步骤: 1. **新建文件与导入素材**: - 首先创建一个新文件,大小与素材1相同,命名为"奔月女孩"。 - 然后打开素材1,...

    HTML5小游戏【火贱兔奔月-425款经典优秀H5小游戏合集】游戏源码分享下载 - hjby.zip

    游戏源码分享下载 --- hjby.zipHTML5小游戏【火贱兔奔月--425款经典优秀H5小游戏合集】游戏源码分享下载 --- hjby.zipHTML5小游戏【火贱兔奔月--425款经典优秀H5小游戏合集】游戏源码分享下载 --- hjby.zipHTML5小...

    析鲁迅《奔月》.docx

    《鲁迅的《奔月》:颠覆传统,开创审美新向度》 鲁迅的短篇小说《奔月》是其《故事新编》中的一篇,它颠覆了我们对古代神话的传统认知,尤其对嫦娥这一角色的刻画,使得这篇作品在文学史上占据了独特的地位。鲁迅...

    HTML5兔子奔月吃月饼游戏源码.zip

    开发者可以通过阅读和分析源代码,了解如何结合HTML5的Canvas、JavaScript和CSS3来构建一个完整的互动游戏,同时也能学习到游戏逻辑设计、用户交互处理和资源管理等方面的知识。对于想要提升自己在HTML5游戏开发技能...

    HTML5兔子奔月吃月饼游戏源码

    HTML5兔子奔月吃月饼游戏源码是一款基于HTML5技术开发的互动小游戏,适用于网页环境,无需额外插件即可在现代浏览器中运行。这款游戏利用了HTML5的核心特性,包括Canvas绘图、JavaScript编程以及可能涉及的Web Audio...

    H5小游戏源码 火贱兔奔月.zip

    【标题】"H5小游戏源码 火贱兔奔月.zip" 提供的是一个基于HTML5技术开发的小游戏的完整源代码。HTML5是一种在网页上创建动态、交互式内容的标记语言,它极大地扩展了传统HTML的能力,使得开发者能够创建更丰富、更具...

    HTML5实现兔子中秋奔月吃月饼游戏源码.zip

    HTML5是一种先进的网页开发技术,它极大地扩展了Web应用程序的功能,使得开发者能够创建富媒体、交互性强的网页应用。...通过分析和修改这个游戏,可以深入理解这些技术在实际项目中的应用,并提升自己的编程技能。

    兔子奔月吃月饼游戏源码-HTML-代码

    这是一个关于Web前端开发的知识点详解,主要聚焦在HTML、CSS和JavaScript这三门核心技术上,以"兔子奔月吃月饼游戏源码"为实例进行解析。 首先,HTML(HyperText Markup Language)是构建网页的基础,它定义了网页...

Global site tag (gtag.js) - Google Analytics