当前位置: 首页 > 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的支持。

相关文章:

第三章 初始化配置(一)

我们首先介绍配置Logback的方法,并提供了许多示例配置脚本。在后面的章节中,我们将介绍Logback所依赖的配置框架Joran。 初始化配置 在应用程序代码中插入日志请求需要大量的规划和努力。观察表明,大约4%的代码用于记录。因此,即…...

WebGIS 开发中的数据安全与隐私保护:急需掌握的要点

在 WebGIS 开发中,数据安全与隐私保护是绝对不能忽视的问题!随着地理信息系统的广泛应用,越来越多的敏感数据被存储和传输,比如个人位置信息、企业地理资产等。一旦这些数据泄露,后果不堪设想。然而,很多开…...

C语言 ——— 函数栈帧的创建和销毁

目录 寄存器 mian 函数是被谁调用的 通过汇编了解函数栈帧的创建和销毁 转汇编后(Add函数之前的部分) 转汇编后(进入Add函数之前的部分) 转汇编后(正式进入Add函数的部分) ​编辑 总结 局部变量…...

2025年真实面试问题汇总(二)

jdbc的事务是怎么开启的 在JDBC中,事务的管理是通过Connection对象控制的。以下是开启和管理事务的详细步骤: 1. 关闭自动提交模式 默认情况下,JDBC连接处于自动提交模式(auto-commit true),即每条SQL语…...

【用「概率思维」重新理解生活】

用「概率思维」重新理解生活:为什么你总想找的「确定答案」并不存在? 第1层:生活真相——所有结果都是「综合得分」 现象:我们总想找到“孩子生病是因为着凉”或“伴侣生气是因为那句话”的单一答案现实:每个结果背后…...

Redis——线程模型·

为什么Redis是单线程却仍能有10w/秒的吞吐量? 内存操作:Redis大部分操作都在内存中完成,并且采用了高效的数据结构,因此Redis的性能瓶颈可能是机器的内存或者带宽,而非CPU,既然CPU不是瓶颈,自然…...

APS排程系统(Advanced Planning and Scheduling,高级计划与排程系统)

APS排程系统(Advanced Planning and Scheduling,高级计划与排程系统)是一种基于供应链管理和约束理论的智能生产管理工具,旨在通过动态优化资源分配和生产流程,解决制造业中的复杂计划问题。以下是其核心要点解析&…...

首个窗口级无人机配送VLN系统!中科院LogisticsVLN:基于MLLM实现精准投递

导读 随着智能物流需求日益增长,特别是“最后一公里”配送场景的精细化,传统地面机器人逐渐暴露出适应性差、精度不足等瓶颈。为此,本文提出了LogisticsVLN系统——一个基于多模态大语言模型的无人机视觉语言导航框架,专为窗户级别…...

仓颉Magic亮相GOSIM AI Paris 2025:掀起开源AI框架新热潮

巴黎,2025年5月6日——由全球开源创新组织GOSIM联合CSDN、1ms.ai共同主办的 GOSIM AI Paris 2025 大会今日在法国巴黎盛大开幕。GOSIM 作为开源人工智能领域最具影响力的年度峰会之一,本届大会以“开放、协作、突破”为核心,汇聚了来自华为、…...

《Effective Python》第2章 字符串和切片操作——深入理解Python 中的字符数据类型(bytes 与 str)的差异

引言 本篇博客基于学习《Effective Python》第三版 Chapter 2: Strings and Slicing 中的 Item 10: Know the Differences Between bytes and str 的总结与延伸。在 Python 编程中,字符串处理是几乎每个开发者都会频繁接触的基础操作。然而,Python 中的…...

windows 强行终止进程,根据端口号

步骤1:以管理员身份启动终端‌ 右键点击开始菜单 → 选择 ‌终端(管理员)‌ 或 ‌Windows PowerShell(管理员)‌。 ‌步骤2:检测端口占用状态‌ # 查询指定端口(示例为1806) netst…...

PHP-FPM 调优配置建议

1、动态模式 pm dynamic; 最大子进程数(根据服务器内存调整) pm.max_children 100 //每个PHP-FPM进程大约占用30-50MB内存(ThinkPHP框架本身有一定内存开销)安全值:8GB内存 / 50MB ≈ 160,保守设置为100 ; 启动时创建的进程数&…...

我喜欢的vscode几个插件和主题

主题 Monokaione Monokai Python 语义高光支持 自定义颜色为 self 将 class , def 颜色更改为红色 为装饰器修复奇怪的颜色 适用于魔法功能的椂光 Python One Dark 这个主题只在python中效果最好。 我为我个人使用做了这个主题,但任何人都可以使用它。 插件 1.Pylance Pylanc…...

openharmony 地图开发(高德sdk调用)

1.显示地图 2.利用sdk完成搜索功能,以列表形式展示,并提供定位和寻路按钮 3.利用sdk完成寻路,并显示路线信息和画出路线,路线和信息各自点击后可联动到对方信息显示 4.调用sdk 开始导航 商务合作:...

Kotlin-类和对象

文章目录 类主构造函数次要构造函数总结 对象初始化 类的继承成员函数属性覆盖(重写)智能转换 类的扩展 类 class Student { }这是一个类,表示学生,怎么才能给这个类添加一些属性(姓名,年龄…)呢? 主构造函数 我们需要指定类的构造函数。构造函数也是函数的一种,但是它专门…...

LVS+keepalived实战案例

目录 部署LVS 安装软件 创建VIP 创建保存规则文件 给RS添加规则 验证规则 部署RS端 安装软件 页面内容 添加VIP 配置系统ARP 传输到rs-2 客户端测试 查看规则文件 实现keepalived 编辑配置文件 传输文件给backup 修改backup的配置文件 开启keepalived服务 …...

可视化+智能补全:用Database Tool重塑数据库工作流

一、插件概述 Database Tool是JetBrains系列IDE(IntelliJ IDEA、PyCharm等)内置的数据库管理插件。它提供了从数据库连接到查询优化的全流程支持,让开发者无需离开IDE即可完成数据库相关工作。 核心价值: 统一工作环境&#xf…...

【认知思维】沉没成本谬误:为何难以放弃已投入的资源

什么是沉没成本谬误 沉没成本谬误(Sunk Cost Fallacy)是指人们倾向于根据过去已经投入的资源(时间、金钱、精力等)而非未来收益来做决策的一种认知偏差。简单来说,它反映了"我已经投入这么多,不能就这…...

Linux 系统安全基线检查:入侵防范测试标准与漏洞修复方法

Linux 系统安全基线检查:入侵防范测试标准与漏洞修复方法 在 Linux 系统的安全管理中,入侵防范是至关重要的环节。通过对系统进行安全基线检查,可以有效识别潜在的安全漏洞,并采取相应的修复措施,从而降低被入侵的风险…...

【HT周赛】T3.二维平面 题解(分块:矩形chkmax,求矩形和)

题意 需要维护 n n n \times n nn 平面上的整点,每个点 ( x , y ) (x, y) (x,y) 有权值 V ( x , y ) V(x, y) V(x,y),初始都为 0 0 0。 同时给定 n n n 次修改操作,每次修改给出 x 1 , x 2 , y 1 , y 2 , v x_1, x_2, y_1, y_2, v x…...

目标检测任务常用脚本1——将YOLO格式的数据集转换成VOC格式的数据集

在目标检测任务中,不同框架使用的标注格式各不相同。常见的框架中,YOLO 使用 .txt 文件进行标注,而 PASCAL VOC 则使用 .xml 文件。如果你需要将一个 YOLO 格式的数据集转换为 VOC 格式以便适配其他模型,本文提供了一个结构清晰、…...

2025深圳杯D题法医物证多人身份鉴定问题四万字思路

Word版论文思路和千行Python代码下载:https://www.jdmm.cc/file/2712074/ 引言 法医遗传学中的混合生物样本分析,特别是短串联重复序列(Short Tandem Repeat, STR)分型结果的解读,是现代刑事侦查和身份鉴定领域的核心…...

利用自适应双向对比重建网络与精细通道注意机制实现图像去雾化技术的PyTorch代码解析

利用自适应双向对比重建网络与精细通道注意机制实现图像去雾化技术的PyTorch代码解析 漫谈图像去雾化的挑战 在计算机视觉领域,图像复原一直是研究热点。其中,图像去雾化技术尤其具有实际应用价值。然而,复杂的气象条件和多种因素干扰使得这…...

Focal Loss 原理详解及 PyTorch 代码实现

Focal Loss 原理详解及 PyTorch 代码实现 介绍一、Focal Loss 背景二、代码逐行解析1. 类定义与初始化 三、核心参数作用四、使用示例五、应用场景六、总结 介绍 一、Focal Loss 背景 Focal Loss 是为解决类别不平衡问题设计的损失函数,通过引入 gamma 参数降低易…...

VScode 的插件本地更改后怎么生效

首先 vscode 的插件安装地址为 C:\Users\%USERNAME%\.vscode\extensions 找到你的插件包进行更改 想要打印日志,用下面方法 vscode.window.showErrorMessage(console.log "${name}" exists.); 打印结果 找到插件,点击卸载 然后点击重新启动 …...

这类物种组织heatmap有点东西

如果想知道研究对象(人、小鼠、拟南芥、恒河猴等​​)某个时候各个器官的fMRI信号强度、炎症程度等指标的差异,gganatogram可以以热图的形式轻松满足你的需求。 数据准备 以男性为例,数据包含四列, 每列详细介绍 org…...

通讯录程序

假设通讯录可以存放100个人的信息(人的信息:姓名、年龄、性别、地址、电话) 功能:1>增加联系人 2>删除指定联系人 3>查找指定联系人信息 4>修改指定联系人信息 5>显示所有联系人信息 6>排序(…...

无需翻墙!3D 优质前端模板分享

开发网站时,无需撰写 HTML、CSS 和 JavaScript 代码,直接调用模板内现成的组件,通过拖拽组合、修改参数,几天内即可完成核心页面开发,开发速度提升高达 70% 以上。让开发者更专注于业务逻辑优化与功能创新,…...

Shinkai开源程序 是一个双击安装 AI 管理器(本地和远程),它允许您使用简单的 UI 在 5 分钟或更短的时间内创建 AI 代理

​一、软件介绍 文末提供程序和源码下载 Shinkai 开源应用程序在 Web 浏览器中解锁了一流 LLM (AI) 支持的全部功能/自动化。它允许创建多个代理,每个代理都连接到本地或第三方LLMs(例如 OpenAI GPT),这些…...

vscode不能跳转到同一个工作区的其他文件夹

明白了,你说的“第二种情况”是指: 你先打开的是项目文件夹(比如 MyProject),然后通过 VS Code 的“添加文件夹到工作区”功能,把 ThirdPartyLib 文件夹添加进来。 结果,项目代码里 #include “…...

containerd 之使用 ctr 和 runc 进行底层容器操作与管理

containerd 是目前业界标准的容器运行时,它负责容器生命周期的方方面面,如镜像管理、容器执行、存储和网络等。而 ctr 是 containerd 自带的命令行工具,虽然不如 Docker CLI 用户友好,但它提供了直接与 containerd API 交互的能力…...

IMU 技术概述

IMU(惯性测量单元,Inertial Measurement Unit)是一种通过传感器组合测量物体运动状态和姿态的核心设备,广泛应用于导航、控制、智能设备等领域。以下从原理、组成、应用和发展趋势展开说明: 一、核心定义与本质 IMU …...

talk-centos6之间实现

在 CentOS 6.4 上配置和使用 talk 工具,需要注意系统版本较老,很多配置可能不同于现代系统。我会提供 详细步骤 自动化脚本,帮你在两台 CentOS 6.4 机器上实现局域网聊天。 ⸻ 🧱 一、系统准备 假设你有两台主机: …...

hivesql是什么数据库?

HiveSQL并非指一种独立的数据库,而是指基于Apache Hive的SQL查询语言接口,Hive本身是一个构建在Hadoop生态系统之上的数据仓库基础设施。 以下是对HiveSQL及其相关概念的详细解释: 一、Hive概述 定义: Hive是由Facebook开发&…...

(1)python开发经验

文章目录 1 安装包格式说明2 PySide支持Windows7 更多精彩内容👉内容导航 👈👉Qt开发 👈👉python开发 👈 1 安装包格式说明 PySide下载地址 进入下载地址后有多种安装包,怎么选择: …...

[论文翻译]PPA: Preference Profiling Attack Against Federated Learning

文章目录 摘要一、介绍1、最先进的攻击方式2、PPA3、贡献 二、背景和相关工作1、联邦学习2、成员推理攻击3、属性推理攻击4、GAN攻击5、联邦学习中的隐私推理攻击 三、PPA1、威胁模型与攻击目标(1)威胁模型(2)攻击目标 2、PPA 概述…...

北三短报文数传终端:筑牢水利防汛“智慧防线”,守护江河安澜

3月15日我国正式入汛,较以往偏早17天。据水利部预警显示,今年我国极端暴雨洪涝事件趋多趋频趋强,叠加台风北上影响内陆的可能性,灾害风险偏高,防汛形势严峻复杂。面对加快推进“三道防线”建设,提升“四预”…...

函数加密(Functional Encryption)简介

1. 引言 函数加密(FE)可以被看作是公钥加密(PKE)的一种推广,它允许对第三方的解密能力进行更细粒度的控制。 在公钥加密中,公钥 p k \mathit{pk} pk 用于将某个值 x x x 加密为密文 c t \mathit{ct} c…...

思维链实现 方式解析

思维链的实现方式 思维链的实现方式除了提示词先后顺序外,还有以下几种: 增加详细的中间步骤提示:通过提供问题解决过程中的详细中间步骤提示,引导模型逐步推导和思考。例如,在解决数学证明题时,提示词可以具体到每一步需要运用的定理、公式以及推理的方向,帮助模型构建…...

深入学习Zookeeper的知识体系

目录 1、介绍 1.1、CAP 理论 1.2、BASE 理论 1.3、一致性协议ZAB 1、介绍 2、角色 3、ZXID和myid 4、 历史队列 5、协议模式 6、崩溃恢复模式 7、脑裂问题 2、zookeeper 2.1、开源项目 2.2、功能 2.3、选举机制 3、数据模型 3.1、介绍 3.2、znode分类 4、监听…...

电商平台一站式安全防护架构设计与落地实践

引言:安全即业务,防御即增长 国际权威机构 Forrester 最新报告指出,2024 年全球电商平台因安全防护不足导致的直接营收损失高达 $180 亿,而采用一体化防护方案的头部企业客户留存率提升 32%。本文基于 10 万 节点防护实战数据&a…...

【Pandas】pandas DataFrame cummin

Pandas2.2 DataFrame Computations descriptive stats 方法描述DataFrame.abs()用于返回 DataFrame 中每个元素的绝对值DataFrame.all([axis, bool_only, skipna])用于判断 DataFrame 中是否所有元素在指定轴上都为 TrueDataFrame.any(*[, axis, bool_only, skipna])用于判断…...

奇妙小博客

import matplotlib.pyplot as plt# 定义顶点坐标 A [0, 0] B [6, 1] C [4, 6] P [4, 3]# 绘制三角形 ABC plt.plot([A[0], B[0], C[0], A[0]], [A[1], B[1], C[1], A[1]], b-, labelTriangle ABC) # 绘制点 P plt.scatter(P[0], P[1], colorr, labelPoint P(4,3))# 标注顶点…...

嵌入式学习笔记 - HAL_ADC_ConfigChannel函数解析

贴函数原型: 一 首先配置规则通道序列 其实所有的配置函数都是在对寄存器进行操作,要想看懂Hal库底层函数驱动就先把寄存器如何配置看懂,以下是配置规则通道寄存器的介绍,以ADC_SQR3为例,也就是通道序列1到序列6&…...

Java反射详细介绍

的反射(Reflection)是一种强大的机制,允许程序在运行时动态获取类的信息、操作类的成员(属性、方法、构造器),甚至修改类的行为。它是框架开发(如 Spring、MyBatis)、单元测试工具&a…...

2025年土木建筑与水利工程国际会议(ICCHE 2025)

2025 International Conference on Civil and Hydraulic Engineering (ICCHE 2025) (一)会议信息 会议简称:ICCHE 2025 大会地点:中国银川 投稿邮箱:icchesub-paper.com 收录检索:提交Ei Compendex,CPCI,C…...

适应性神经树:当深度学习遇上决策树的“生长法则”

1st author: Ryutaro Tanno video: Video from London ML meetup paper: Adaptive Neural Trees ICML 2019 code: rtanno21609/AdaptiveNeuralTrees: Adaptive Neural Trees 背景 在机器学习领域,神经网络(NNs)凭借其强大的表示学习能力&…...

IBM BAW(原BPM升级版)使用教程第十四讲

续前篇! 一、流程设计中的编程 在 IBM Business Automation Workflow (BAW) 中,编程部分涵盖了多种技术、工具和策略,帮助用户定制和扩展流程。BAW 主要通过脚本、集成、服务和自定义代码来实现流程的灵活性和定制化。下面将详细讲解 BAW …...

【计算机网络 第8版】谢希仁编著 第四章网络层 题型总结3 SDN OpenFlow

SDN OpenFlow题型 这题其实,认真看书P196-197的例子也不难理解。我个人认为所谓防自学设计主要就是你没看懂这张图的时候就是天书,你知道怎么读这张图的时候就很简单。不过我相信这个用心一点应该也都是能懂的。 题目 4.66-4.69 4-66 我最大的一个问题…...

【React中函数组件和类组件区别】

在 React 中,函数组件和类组件是两种构建组件的方式,它们在多个方面存在区别,以下详细介绍: 1. 语法和定义 类组件:使用 ES6 的类(class)语法定义,继承自 React.Component。需要通过 this.props 来访问传递给组件的属性(props),并且通常要实现 render 方法返回 JSX…...