logback的简单配置详解
<?xml version="1.0" encoding="UTF-8"?>
<!--logback配置的根元素。scan=true表示logback将定期扫描配置文件以检测更改。scanPeriod="30 Period" 扫描间隔为30s-->
<configuration scan="true" scanPeriod="30 seconds"><!--日志文件的保存路径,首先查找系统属性-Dlog.dir,如果存在就使用其;否则,在当前目录下创建名为/data/logs/sys_admin目录做日志存放的目录 --><property name="LOG_HOME" value="/data/logs/sys_admin"/><!-- 日志输出格式 --><!--格式化输出:%d表示日期,%t表示线程名,%-5level:级别从左显示5个字符宽度 %m:日志消息,%n:换行符,%X{traceId}表示记录的traceId%logger表示日志记录事件所在类名,{0}表示只保留类名的第一个元素,即类名的最后一部分%X表示提取MDC中的值,${traceId}是MDC键,表示要提取的值的名称--><property name="ENCODER_PATTERN"value="%d{yyyy-MM-dd HH:mm:ss.SSS} %X{traceId} %level %logger{0} [%t] %m%n"/><!-- 控制台输出 :定义了一个控制台输出的Appender,它将日志消息输出到控制台--><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><pattern>${ENCODER_PATTERN}</pattern></encoder></appender><!-- INFO日志:按照每天生成日志文件 --><!--定义一个滚动文件Appender,将INFO日志记录到文件--><appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><!--表示以追加模式写入日志文件--><Append>true</Append><!--指定日志文件的路径和文件名--><file>${LOG_HOME}/sys_info.log</file><!--配置基于时间的滚动策略,按日期创建新的日志文件--><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!--指定日志文件名的模式,以日期为后缀--><FileNamePattern>${LOG_HOME}/sys_info.log.%d{yyyy-MM-dd}</FileNamePattern><!--日志文件保留天数--><MaxHistory>30</MaxHistory></rollingPolicy><!--日志输出格式和编码格式--><encoder><pattern>${ENCODER_PATTERN}</pattern><charset>UTF-8</charset></encoder><!-- <filter> 元素用于配置日志事件的过滤器,以控制哪些事件会被记录。在您提供的配置中,<filter> 是一个 ch.qos.logback.classic.filter.LevelFilter 过滤器,用于过滤日志事件的级别。--><filter class="ch.qos.logback.classic.filter.LevelFilter"><!--指定要接受的日志级别。在这个示例中,INFO 级别的日志事件将被接受,而低于 INFO 级别的事件将被拒绝。--><level>INFO</level><!--当日志事件与指定级别匹配时的处理方式。在这里,如果级别匹配到 INFO,则允许该事件通过(ACCEPT)--><onMatch>ACCEPT</onMatch><!--当日志事件与指定级别不匹配时的处理方式。在这里,如果级别不匹配 INFO,则拒绝该事件(DENY),即不记录。--><onMismatch>DENY</onMismatch></filter></appender><!-- ERROR日志:用于将ERROR日志输出到独立文件 --><appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><Append>true</Append><file>${LOG_HOME}/sys_error.log</file><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!--日志文件输出的文件名--><FileNamePattern>${LOG_HOME}/sys_error.log.%d{yyyy-MM-dd}</FileNamePattern><!--日志文件保留天数--><MaxHistory>30</MaxHistory></rollingPolicy><encoder><pattern>${ENCODER_PATTERN}</pattern><charset>UTF-8</charset></encoder><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>ERROR</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter></appender><!-- WARN日志:用于将WARN日志输出到独立文件 --><appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><Append>true</Append><file>${LOG_HOME}/sys_warn.log</file><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!--日志文件输出的文件名--><FileNamePattern>${LOG_HOME}/sys_warn.log.%d{yyyy-MM-dd}</FileNamePattern><!--日志文件保留天数--><MaxHistory>30</MaxHistory></rollingPolicy><encoder><pattern>${ENCODER_PATTERN}</pattern><charset>UTF-8</charset></encoder><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>WARN</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter></appender><appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><Append>true</Append><file>${LOG_HOME}/sys_debug.log</file><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!--日志文件输出的文件名--><FileNamePattern>${LOG_HOME}/sys_debug.log.%d{yyyy-MM-dd}</FileNamePattern><!--日志文件保留天数--><MaxHistory>30</MaxHistory></rollingPolicy><encoder><pattern>${ENCODER_PATTERN}</pattern><charset>UTF-8</charset></encoder><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>DEBUG</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter></appender><appender name="trace" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>/data/logs/trace/trace.log</file><Append>true</Append><encoder><!--%msg 表示输出消息文本,%n 表示换行符。这意味着日志事件将只包括消息文本,并在每条日志事件后添加一个换行符。--><pattern>%msg%n</pattern><charset>UTF-8</charset></encoder><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!--日志文件输出的文件名--><FileNamePattern>/data/logs/trace/trace.log.%d{yyyy-MM-dd-HH}</FileNamePattern><!--日志文件保留天数--><MaxHistory>1</MaxHistory></rollingPolicy></appender><!--定义了一个名为 async-trace 的异步 Appender,并指定了其类 ch.qos.logback.classic.AsyncAppender。异步 Appender 允许将日志事件放入队列并以异步方式处理它们,这有助于提高性能,特别是在高负载环境中--><appender name="async-trace" class="ch.qos.logback.classic.AsyncAppender"><!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 --><discardingThreshold>80</discardingThreshold><!-- 更改默认的队列的深度,该值会影响性能.默认值为256 --><queueSize>512</queueSize><!-- 添加附加的appender,最多只能添加一个 --><appender-ref ref="trace"/></appender><!--这个配置为特定类 cn.techwolf.trace.utils.SpanLogger 创建了一个 Logger,指定了记录的日志级别和一个异步 Appender。这允许您单独配置特定类的日志记录行为,包括日志级别和目标 Appender,以满足应用程序的需求。这对于精确控制不同类的日志非常有用。--><logger name="cn.system.trace.utils.SpanLogger" additivity="false"><level value="INFO"/><appender-ref ref="async-trace"/></logger><logger name="cn.system.jade.datasource.SQLParseInfo" additivity="false"><level value="INFO"/><appender-ref ref="WARN_FILE"/></logger><!-- 日志输出级别 这部分配置定义了根 Logger,即所有日志事件的默认记录方式。 这个配置为根 Logger 指定了默认的日志级别和多个不同的 Appender,以便将日志事件同时记录到不同的目标,例如控制台和文件。这允许您在不同环境中将日志事件发送到不同的目标,以便满足不同的需求,例如在生产环境中将日志记录到文件,而在开发环境中将其输出到控制台。这是 Logback 配置中非常有用的一部分。--><root><!--这定义了根 Logger 的默认日志级别,即 INFO。这意味着只有 INFO 级别及更高级别的日志事件会被记录,低于 INFO 级别的事件将被忽略。--><level value="INFO"/><!--这将根 Logger 的日志事件附加到名为 STDOUT 的 Appender,这意味着根 Logger 的日志事件将被输出到控制台。--><appender-ref ref="STDOUT"/><!--Logger 的日志事件附加到不同的 Appender,分别是 INFO_FILE、WARN_FILE、ERROR_FILE 和 DEBUG_FILE。这表示根 Logger 的日志事件将同时记录到多个目标,包括文件日志。--><appender-ref ref="INFO_FILE"/><appender-ref ref="WARN_FILE"/><appender-ref ref="ERROR_FILE"/><appender-ref ref="DEBUG_FILE"/></root>
</configuration>
相关文章:
logback的简单配置详解
<?xml version"1.0" encoding"UTF-8"?> <!--logback配置的根元素。scantrue表示logback将定期扫描配置文件以检测更改。scanPeriod"30 Period" 扫描间隔为30s--> <configuration scan"true" scanPeriod"30 seco…...

TatukGIS Developer Kernel使用教程:如何为FMX创建第一个应用程序
概述:TatukGIS Developer Kernel(DK)是一个用于开发自定义地理信息系统(GIS)应用程序以及解决方案的综合性软件开发工具包(SDK)。本篇文章主要介绍用DK11为FMX创建一个应用程序,现在…...

Ant Design Vue设置表格滚动 宽度自适应 不换行
Ant Design Vue设置表格滚动 宽度自适应 不换行 添加以下属性即可解决这个问题: <a-table :columns"columns" :data-source"list":pagination"false"bordered:scroll"{ x: max-content }" >...
在Linux上开启文件服务,需要安装并配置Samba
在Linux上开启文件服务,需要安装并配置Samba。以下是具体步骤: 安装Samba软件包:在终端中输入以下命令进行安装: 复制代码 sudo apt-get update && sudo apt-get install samba 配置Samba:编辑Samba配置文件…...
TypeScript 类型兼容性
TypeScript 类型兼容性 在前端开发中,使用 TypeScript 可以提供更强大的类型检查和类型安全。然而,了解 TypeScript 中的类型兼容性是至关重要的,因为它涉及如何处理不同类型之间的关系,以及在这些类型之间进行无缝的交互。本文将…...

【多线程】线程的状态
我们可以通过下面的这段代码来查看线程一共有哪几种状态 //线程的状态是一个枚举类型 Thread.State for(Thread.State state : Thread.State.values()){System.out.println(state); }NEW(新建状态): 当线程对象已经被创建,但是 s…...
pytorch 对图片进行归一化处理
如题,神经网络通常使用浮点数张量作为输入,我们要做的第一件事情就是将图片转化为浮点数,并且做归一化操作。 import torch import imageio import osdata_dirF:\\work\\deep_learning\\pytorch\\dlwpt-code-master\\data\\p1ch4\\image-cat…...

零售数据分析师熬夜整理:人、货、场、供、财这样做
在零售数据分析中,人、货、场、供、财数据分析非常重要,它们分别是指人员、商品、场所、供应和财务,对这些要素进行数据分析,可以更好地了解市场需求、优化商品供应链、调整销售策略和提高盈利能力。零售数据量大、分析指标多且复…...

基于SSM的学生选课管理系统
基于SSM的高校校园学生选课系统的设计与实现~ 开发语言:Java数据库:MySQL技术:SpringSpringMVCMyBatisVue工具:IDEA/Ecilpse、Navicat、Maven 系统展示 登录界面 专业管理 教师管理 课程管理 成绩管理 摘要 基于SSM的学生选课管…...

SQL注入漏洞
0x01 漏洞介绍 泛微e-office系统是标准、易用、快速部署上线的专业协同OA软件,国内协同OA办公领域领导品牌,致力于为企业用户提供专业OA办公系统、移动OA应用等协同OA整体解决方案。泛微e-office深谙改革之道以迎变革之机,沉心产品研发数十载…...

C++ wpf自制软件打包安装更新源码实例
程序示例精选 C wpf自制软件打包安装更新源码实例 如需安装运行环境或远程调试,见文章底部个人QQ名片,由专业技术人员远程协助! 前言 这篇博客针对《C wpf自制软件打包安装更新源码实例》编写代码,代码整洁,规则&…...

8月19日PMP成绩,预计10月16日公布!附查询入口、流程
PMP的考试成绩一般在考后6-8周即可查询,8月PMP的成绩预计会在北京时间10月16日晚上公布,具体时间以官方公告为准。 如何查询8月考试成绩? 渠道一:收到PMI邮件提醒 当你注册PMI所使用的邮箱收到一封PMI发来的,标题为…...

简易LDO设计(包含原理图、PCB和实验)
一、前置知识 ①该电路是通过三极管(BJT)来实现的,所以需要知晓三极管的工作原理和特性。 ②三极管有三种状态:放大、饱和、截止。本文是利用三极管的放大状态来模拟LDO芯片的功能。 二、原理图 ①稳压二极管要想稳定到某个电压范…...

SpringBoot面试题5:SpringBoot Starter的工作原理是什么?
该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:SpringBoot Starter的工作原理是什么? Spring Boot Starter 是一种便捷的方式来为 Spring Boot 应用程序引入一组特定功能的依赖项。它简化了项目…...
Leetcode 2902. Count of Sub-Multisets With Bounded Sum
Leetcode 2902. Count of Sub-Multisets With Bounded Sum 1. 解题思路2. 代码实现3. 算法优化 题目链接:2902. Count of Sub-Multisets With Bounded Sum 1. 解题思路 这一题有点惭愧,因为没有搞定,遇上了超时问题…… 我的思路其实还是…...

ARP协议(地址解析协议) 的作用和操作过程
目录 1.问题: (在同一个LAN局域网内)如何在已知目的接口的IP地址前提下确定其MAC地址?2.问题:现在假设主机A要向目的主机B发送一个数据报,怎么发送呢?2.1在一个局域网内时2.1.1情况一:2.1.2情况…...

轻游戏风格虚拟资源付费下载模板Discuz论坛模板
轻游戏风格虚拟资源付费下载模板Discuz论坛模板,游戏资讯付费VIP源码模板。 模板说明: 1、模板名称:"qing游戏风格",版本支持:discuzx3.0版本,discuzx3.1版本,discuzx3.2版本&#…...
MongoDB索引操作
1、创建索引 语句: db.collection.createIndex(keys, options, commitQuorum) 选项参数名类型描述keys 包含排序字段和排序方式的对象, 值: 1为升序索引 -1为降序索引 options参数控制对象backgroundboolean 可选࿰…...

AMEYA360:君正低功耗AIoT图像识别处理器—X1600/X1600E
• 高性能 XBurst 1 CPU,主频1.0GHz • 超低功耗 • 内置LPDDR2(X1600:32MB,X1600E:64MB) • 实时控制核XBurst 0,面向安全管理和实时控制 • 丰富的外设接口 应用领域 • 基于二维码的智能商业 • 智能物联网 • 高端…...

EM@圆和圆锥曲线的参数方程
文章目录 abstract圆的参数方程匀速圆周运动的轨迹从普通方程直接转化为参数方程 任意位置圆心的方程参数方程一般方程例 交点问题的参数方程法 圆锥曲线的参数方程椭圆参数方程例椭圆内接矩形的最大面积问题 抛物线参数方程一般位置的抛物线例 双曲线的参数方程点到双曲线的最…...
R语言AI模型部署方案:精准离线运行详解
R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...
Java 8 Stream API 入门到实践详解
一、告别 for 循环! 传统痛点: Java 8 之前,集合操作离不开冗长的 for 循环和匿名类。例如,过滤列表中的偶数: List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...

04-初识css
一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...
基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解
JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用,结合SQLite数据库实现联系人管理功能,并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能,同时可以最小化到系统…...
离线语音识别方案分析
随着人工智能技术的不断发展,语音识别技术也得到了广泛的应用,从智能家居到车载系统,语音识别正在改变我们与设备的交互方式。尤其是离线语音识别,由于其在没有网络连接的情况下仍然能提供稳定、准确的语音处理能力,广…...

《信号与系统》第 6 章 信号与系统的时域和频域特性
目录 6.0 引言 6.1 傅里叶变换的模和相位表示 6.2 线性时不变系统频率响应的模和相位表示 6.2.1 线性与非线性相位 6.2.2 群时延 6.2.3 对数模和相位图 6.3 理想频率选择性滤波器的时域特性 6.4 非理想滤波器的时域和频域特性讨论 6.5 一阶与二阶连续时间系统 6.5.1 …...

2025年- H71-Lc179--39.组合总和(回溯,组合)--Java版
1.题目描述 2.思路 当前的元素可以重复使用。 (1)确定回溯算法函数的参数和返回值(一般是void类型) (2)因为是用递归实现的,所以我们要确定终止条件 (3)单层搜索逻辑 二…...

【Zephyr 系列 16】构建 BLE + LoRa 协同通信系统:网关转发与混合调度实战
🧠关键词:Zephyr、BLE、LoRa、混合通信、事件驱动、网关中继、低功耗调度 📌面向读者:希望将 BLE 和 LoRa 结合应用于资产追踪、环境监测、远程数据采集等场景的开发者 📊篇幅预计:5300+ 字 🧭 背景与需求 在许多 IoT 项目中,单一通信方式往往难以兼顾近场数据采集…...
【向量库】Weaviate 搜索与索引技术:从基础概念到性能优化
文章目录 零、概述一、搜索技术分类1. 向量搜索:捕捉语义的智能检索2. 关键字搜索:精确匹配的传统方案3. 混合搜索:语义与精确的双重保障 二、向量检索技术分类1. HNSW索引:大规模数据的高效引擎2. Flat索引:小规模数据…...

第2篇:BLE 广播与扫描机制详解
本文是《BLE 协议从入门到专家》专栏第二篇,专注于解析 BLE 广播(Advertising)与扫描(Scanning)机制。我们将从协议层结构、广播包格式、设备发现流程、控制器行为、开发者 API、广播冲突与多设备调度等方面,全面拆解这一 BLE 最基础也是最关键的通信机制。 一、什么是 B…...