当前位置: 首页 > news >正文

第三章 初始化配置(一)

我们首先介绍配置Logback的方法,并提供了许多示例配置脚本。在后面的章节中,我们将介绍Logback所依赖的配置框架Joran。

初始化配置

在应用程序代码中插入日志请求需要大量的规划和努力。观察表明,大约4%的代码用于记录。因此,即使是一个中等大小的应用程序也会包含数千个嵌入其代码的日志语句。
考虑到它们的数量,我们需要工具来管理这些日志语句。

可以通过编程方式或使用XML、Groovy或序列化模型格式的配置脚本来配置Logback。
对于现有的log4j用户来说,他们可以使用我们的PropertiesTranslator网页应用将log4j.properties文件转换为logback.xml。

让我们先讨论一下Logback的配置初始化步骤:

  1. Logback会通过服务加载机制来查找自定义的Configurator。如果找到,则优先于Logback自己的配置器,例如DefaultJoranConfigurator(请参阅下文)。

    自定义的Configurator是接口ch.qos.logback.classic.spi.Configurator的实现。它们是通过位于META-INF/services/ch.qos.logback.classic.spi.Configurator中的配置来加载的。
    该文件中应该使用全限定类名来指定希望加载的自定义的Configurator。

  2. 1.3.9/1.4.9版本以后,如果用户没有像第一步一样提供自定义的Configurator,则Logback将实例化一个SerializedModelConfigurator。

    鉴于用户兴趣不足,SerializedModelConfigurator将于2025年7月1日从初始化序列中移除。

    由于SerializedModelConfigurator并未受到用户的关注,并且随着logback-tyler项目的出现,
    SerializedModelConfigurator将在不久的将来从Logback的初始化序列中移除。因此,我们不建议您依赖SerializedModelConfigurator

    • 如果设置了系统属性“logback.scmoFile”,则SerializedModelConfigurator将尝试定位“logback.scmoFile”指定的文件,如果能够找到该文件,它将被读取并用于配置。
    • 如果上述系统属性未设置或指定文件无法找到,则SerializedModelConfigurator将在classpath中搜索序列化配置模型文件logback-test.scmo,如果可以找到该文件,则会读取并解释其用于配置。
    • 如果上述文件无法找到,SerializedModelConfigurator将在classpath中搜索序列化配置模型文件logback.scmo
    • 如果无法找到序列化配置模型文件,则SerializedModelConfigurator将返回执行状态要求调用下一个可用的配置器,即DefaultJoranConfigurator

    从序列化模型文件中读取配置可以更快地执行,并且不需要任何XML库。与GraalVM结合使用时,这可能会产生更小的可执行文件并加快启动速度。

  3. 常规配置,如果之前的配置器无法找到所需的资源,系统会创建并执行默认的配置器DefaultJoranConfigurator

    • 如果设置了系统属性“logback.configurationFile”,则DefaultJoranConfigurator将尝试定位“logback.configurationFile”指定的文件,如果能够找到该文件,它将被读取并用于配置。
    • 如果上一步失败了,DefaultJoranConfigurator将尝试在classpath中查找配置文件*“logback-test.xml”*,如果能够找到该文件,则会读取并解析它以进行配置。
    • 如果找不到这样的文件,它将尝试在类路径中查找配置文件*“logback.xml”*,如果能够找到该文件,则会读取并解析其配置信息。需要注意的是,这是常规的配置步骤。

    PropertiesConfigurator(1.5.8版本引入)允许通过属性文件设置记录器级别。可以通过文件路径或HTTP/HTTPS协议的URL指定属性文件的位置。
    还支持监视文件并在更改时重新配置。请注意,以properties格式编写的配置文件应作为XML格式的主配置文件的一部分,或由logback-tyler生成的配置器的一部分。

    • 如果无法找到配置文件,则DefaultJoranConfigurator将返回执行状态要求调用下一个可用的配置器,即BasicConfigurator
  4. 如果上述方法都失败了,logback-classic将使用BasicConfigurator自动配置自己,这样会将日志输出到控制台。

在没有配置文件的情况下,最后一步旨在提供一种默认(但非常基本)的日志记录功能。

如果你使用的是遵循Maven文件夹结构的构建工具,那么将logback-test.xml放在src/test/resources文件夹下,
Maven会确保它不会被包含在生成的工件中。因此,在测试时可以使用logback-test.xml配置文件,而在生产环境中则可以使用logback.xml配置文件。

Joran解析指定的配置文件大约需要100毫秒。要在应用程序启动时节省这些时间,可以使用步骤1的服务加载机制来自定义Configurator,
使用BasicConfigurator是个不错的选择。
更好的办法是,使用TylerConfigurator方便快捷的将XML文件转换为Java类。

鉴于Groovy是一门完整的编程语言,为了保护无辜者(避免潜在的安全或复杂性问题),我们已停止对logback.groovy的支持。
不过,Tucker Pelletier在virtualdogbert/logback-groovy-config项目中继续维护了对Groovy的支持。

http://www.xdnf.cn/news/424675.html

相关文章:

  • GitHub 趋势日报 (2025年05月12日)
  • 电能质量扰动信号信号通过hilbert变换得到瞬时频率
  • 2025.05.11拼多多机考真题算法岗-第一题
  • MCU开发学习记录14* - 8080学习与实践(HAL库) - 控制LCD屏幕显示中英文、图片 - STM32CubeMX
  • 【Axure视频教程】中继器表格间批量控制和传值
  • 艺考之神余嘉诚话剧舞台首秀《屈原辞》 倾情演绎楚辞风骨
  • [Java][Leetcode middle] 45. 跳跃游戏 II
  • 音频转文字-在线工具包及使用记录
  • 提示词设计模板(基于最佳实践)
  • Datawhale PyPOTS时间序列5月第1次笔记
  • 2025 3D工业相机选型及推荐
  • Elecron 相关介绍以及常见的面试问题
  • 【MapReduce入门】深度解析MapReduce:定义、核心特点、优缺点及适用场景
  • 1950-2024年中国区域的积温数据(大于10°)
  • 2025最新出版 Microsoft Project由入门到精通(七)
  • Unity 2D 行走动画示例工程手动构建教程-AI变成配额前端UI-完美游戏开发流程
  • 5月13日day24日打卡
  • 完成springBoot+vue项目时学习到的知识点
  • 嵌入式STM32学习——外部中断EXTI与NVIC的基础练习⭐
  • 机试刷题:进制转换3
  • 【Pandas】pandas DataFrame cummin
  • 蓝桥杯 11.日志统计
  • 亚远景-基于ASPICE的汽车供应链质量管控培训
  • 网站遭受扫描攻击,大量爬虫应对策略
  • C++伯罗奔尼撒箭阵 全国信息素养大赛复赛决赛 C++小学/初中组 算法创意实践挑战赛 内部集训模拟题详细解析
  • springboot2.7.18 升级到3.1.5过程
  • Ubuntu 22.04.5 LTS 系统中配置仓库源
  • Gartner《如何有效融合Data Fabric 与Data Mesh数据战略》学习心得
  • 【TDengine源码阅读】DLL_EXPORT
  • 【设备管理—磁盘调度算法】