详解日志格式配置:XML 与 Spring Boot 配置文件格式
详解日志格式配置:XML 与 Spring Boot 配置文件格式
日志是现代应用程序中不可或缺的一部分,通过定制化日志格式和颜色,开发人员可以更方便地调试和监控应用。本文将深入讲解如何在 XML 配置文件 和 Spring Boot 配置文件 中设置日志格式,涉及日志内容、颜色、字符数限制等细节。
一、日志格式的基本概念
日志格式定义了每条日志记录的输出样式,常用的格式包括:
- 时间戳:记录日志产生的时间。
- 日志级别:例如
INFO,DEBUG,ERROR。 - 日志记录器:输出日志的类或组件的名称。
- 日志消息:具体的日志内容。
- 方法名称、文件名、行号:用于定位日志发生的代码位置。
- 线程信息:当前执行日志的线程。
这些信息通过不同的占位符来表示,并且可以灵活配置它们的格式、颜色及输出宽度。
二、XML 配置文件中的日志格式
在基于 Logback 的项目中,日志格式通常通过 logback.xml 文件进行配置。Logback 提供了丰富的日志格式控制能力,包括设置颜色、输出字符宽度等。
2.1 配置示例:基础格式
以下是一个基本的日志格式配置,展示了如何在控制台输出日志信息,并定制时间、日志级别、文件名、行号、方法名和日志消息。
<configuration><!-- 定义控制台输出格式 --><appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>%d{HH:mm:ss} [%file:%line] %M - %msg%n</pattern></encoder></appender><!-- 定义根日志级别 --><root level="info"><appender-ref ref="CONSOLE" /></root>
</configuration>
2.2 配置解析
%d{HH:mm:ss}:表示时间戳,格式为HH:mm:ss,仅显示小时、分钟和秒。[%file:%line]:表示文件名和行号,格式为[文件名:行号]。例如[MyClass.java:123]。%M:表示方法名称,即调用日志的具体方法。- %msg:表示日志的具体消息内容。%n:表示换行符。
2.3 配置示例:带颜色和字符限制
Logback 支持使用 ANSI 转义码来为控制台日志添加颜色,并且可以限制输出的字符数。以下是一个更复杂的示例,展示了如何为日志的各个部分添加颜色和设置字符宽度限制。
<configuration><!-- 定义控制台输出格式 --><appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>%clr(%d{HH:mm:ss}){faint} <!-- 时间戳:浅色 -->%clr([%file:%line]){magenta} <!-- 文件名和行号:品红色 -->%clr(%M){cyan} <!-- 方法名:青色 -->- %msg%n <!-- 消息内容 --></pattern></encoder></appender><root level="info"><appender-ref ref="CONSOLE" /></root>
</configuration>
2.4 配置解析:颜色与字符数限制
-
%clr(...):用于为日志输出部分添加颜色。Logback 支持多种颜色,常用的颜色包括:{faint}:淡色{magenta}:品红色{cyan}:青色{red}:红色{yellow}:黄色
-
%d{HH:mm:ss}:时间戳格式为HH:mm:ss,并设置为 浅色(faint)。 -
[%file:%line]:文件名和行号,使用 品红色(magenta)。 -
%M:方法名,使用 青色(cyan)。 -
%msg:日志消息内容。
2.5 限制字符数
可以通过限制输出的字符数来规范日志的格式,避免过长的记录影响可读性。
%10.10logger:将记录器名称限制为 10 个字符,超出部分截断。%40.40logger:将记录器名称限制为 40 个字符,超出部分截断。%-5level:日志级别右对齐,占用 5 个字符。
示例:限制字符数与格式化
<configuration><appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>%d{HH:mm:ss} %-5level %logger{40} [%file:%line] %M - %msg%n</pattern></encoder></appender><root level="info"><appender-ref ref="CONSOLE" /></root>
</configuration>
2.6 配置输出示例
日志输出的格式会是:
10:30:09 INFO com.example.MyService [MyClass.java:57] loadOpenCV - 当前操作系统: windows 10
三、Spring Boot 配置文件中的日志格式
Spring Boot 提供了更简化的方式来配置日志格式。你可以通过 application.properties 或 application.yml 文件来快速定制控制台日志的输出格式。
3.1 application.properties 配置示例
在 application.properties 文件中配置日志格式:
logging.pattern.console=%d{HH:mm:ss} %-5level %logger{36} [%file:%line] %M - %msg%n
3.2 application.yml 配置示例
在 application.yml 文件中配置日志格式:
logging:pattern:console: "%d{HH:mm:ss} %-5level %logger{36} [%file:%line] %M - %msg%n"
3.3 配置解析
与 Logback 配置的语法类似,Spring Boot 配置文件中也使用类似的占位符:
%d{HH:mm:ss}:时间戳,显示为HH:mm:ss格式。%-5level:日志级别,使用右对齐,宽度为 5 个字符。%logger{36}:日志记录器名称,最多显示 36 个字符,超出部分会被截断。[%file:%line]:显示文件名和行号,格式为[文件名:行号]。%M:方法名。%msg:日志消息内容。
3.4 配置输出示例
日志输出格式如下:
10:30:09 INFO com.example.MyService [MyClass.java:57] loadOpenCV - 当前操作系统: windows 10
3.5 配置带颜色的输出(Spring Boot)
Spring Boot 支持使用 ANSI 颜色代码,尽管它不像 Logback 那样具有强大的颜色控制能力,但可以通过 logging.pattern.console 属性设置颜色。
logging.pattern.console=%clr(%d{HH:mm:ss}){faint} %-5level %logger{36} [%file:%line] %M - %msg%n
配置解析
%clr(...){faint}:为时间戳部分设置颜色为淡色(浅灰色)。- 其他部分如日志级别、记录器名称、文件名等采用默认颜色。
四、常见日志格式占位符与颜色
| 占位符 | 说明 | 示例输出 |
|---|---|---|
%d{HH:mm:ss} | 时间戳,格式为小时:分钟:秒 | 10:30:09 |
%level | 日志级别 | INFO, DEBUG, ERROR |
%logger{36} | 日志记录器名称,限制为 36 个字符 | com.example.MyClass |
%file | 文件名 | MyClass.java |
%line | 行号 | 57 |
%M | 方法名称 | loadOpenCV |
%msg | 日志消息内容 | 当前操作系统:windows 10 |
%n | 换行符 | |
%clr(...) | 颜色控制(如淡色、红 |
色、绿色、青色等) | 例如 %clr(%d{HH:mm:ss}){faint} |
| %logger{10} | 限制记录器名称为 10 个字符 | com.examp... |
五、总结与最佳实践
-
颜色和格式:
- 使用
Logback提供的ANSI转义码,可以轻松为日志输出添加颜色,帮助开发人员快速定位问题。 - 日志格式中可以控制时间戳、日志级别、记录器、消息内容等部分的颜色,使日志更具可读性。
- 使用
-
字符数限制:
- 通过限制字段长度(如
%logger{36}或%M{10}),可以避免日志输出过长,影响日志的整洁性。
- 通过限制字段长度(如
-
适用场景:
logback.xml更适用于复杂的日志配置和多种输出形式(如文件、控制台)。application.properties和application.yml提供简单而有效的方式来配置 Spring Boot 项目的日志格式。
通过合理配置日志格式,开发人员可以大大提高日志的可读性和可维护性,有效帮助项目的调试与运维。
相关文章:
详解日志格式配置:XML 与 Spring Boot 配置文件格式
详解日志格式配置:XML 与 Spring Boot 配置文件格式 日志是现代应用程序中不可或缺的一部分,通过定制化日志格式和颜色,开发人员可以更方便地调试和监控应用。本文将深入讲解如何在 XML 配置文件 和 Spring Boot 配置文件 中设置日志格式&am…...
JDK21新特性
目录 虚拟线程(JEP 444): 顺序集合(JEP 431): 字符串模板(JEP 430): 模式匹配的增强(JEP 440、441以及443): 结构化并发和作用域值…...
SqlDataAdapter
SqlDataAdapter 是 .NET Framework 和 .NET Core 中提供的一个数据适配器类,属于 System.Data.SqlClient 命名空间(或在 .NET 6 中属于 Microsoft.Data.SqlClient 命名空间)。它的作用是充当数据源(如 SQL Server 数据库ÿ…...
AI赋能:构建安全可信的智能电子档案库
在档案的政策与法规上,《中华人民共和国档案法》2020年修订新增,对电子档案的合法要件、地位和作用、安全管理要求和信息化系统建设等方面作出了明确规定,保障数字资源的安全保存和有效利用。 日前,国家档案局令第22号公布《电子…...
分类预测 | PSO-PNN粒子群优化概率神经网络多特征分类预测
分类预测 | PSO-PNN粒子群优化概率神经网络多特征分类预测 目录 分类预测 | PSO-PNN粒子群优化概率神经网络多特征分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Matlab实现PSO-PNN粒子群优化概率神经网络多特征分类预测,运行环境Matlab2018b及以…...
AcWing 3416. 时间显示
文章目录 前言代码思路 前言 这种我最担心的就是一些语法格式忘掉了。还有 int ,long long 的数据范围我记得不是很清楚,印象中 int 是 20 亿左右,long long 不行就得用数组来存这个数字了。int,long long数据类型及数值范围。好像没记错,记…...
【软考速通笔记】系统架构设计师⑲——专业英语
文章目录 一、前言二、常用名词三、架构风格四、非功能需求五、应用架构六、软件架构重用 一、前言 笔记目录大纲请查阅:【软考速通笔记】系统架构设计师——导读 二、常用名词 名词翻译architecture架构system系统design设计requirements需求components组件constr…...
java注解(二):注解的解析以及应用场景、用注解和反射模拟junit框架代码演示
目录 1、什么是注解的解析? 2、解析注解的案例 1、自定义一个注解 2、在类和方法上使用自己定义的注解 3、解析注解 3、模拟Junit框架案例 1、自定义一个MyTest注解 2、定义一个测试类,使用自定义的注解 3、写一个启动类 本文章主要讲解什么是注…...
C# 命名空间(Namespace)
文章目录 前言一、命名空间的定义与使用基础(一)定义语法与规则(二)调用命名空间内元素 二、using 关键字三、嵌套命名空间 前言 命名空间(Namespace)在于提供一种清晰、高效的方式,将一组名称与…...
几个Linux系统安装体验: centos7系统服务版
本文介绍CentOS7服务版本的安装。 前言 当前国产操作系统版本众多,但根据笔者多年的实践经验得到的认知,最好能抓住底层逻辑,上下打通打透,拉齐表现和本质,就能在纷扰版本中看得清清楚楚,明明白白…...
ViT学习笔记(一) 基本的原理和框架结构
原论文地址:https://arxiv.org/pdf/2010.11929 首先大致通读一下原论文,这是很有必要的,但不必完全读懂,因为会有高手给我们解读,比如: 【Transformer系列】深入浅出理解ViT(Vision Transformer)模型-CSD…...
fedora下Jetbrains系列IDE窗口中文乱码解决方法
可以看到窗口右部分的中文内容为小方块。 进入 Settings - Appearance & Behavior - Appearance - Use custom font : Note Sans Mono CJK SC ,设置后如下图:...
nginx根据报文里字段转发至不同地址
nginx接收到post请求.请求报文里是一个json字符串,字符串里有个字段id。 根据id不同,转发到不同地址。 如果idaaa,转发到www.aaa.com.test 如果idbbb,转发到www.bbb.com.test 如何配置,请提供一个nginx.conf 要在 Nginx 中根据 POST 请求的 JSON 负载中的…...
使用 html/css 实现 educoder 顶部导航栏的步骤和方法
要使用HTML和CSS实现一个类似于Educoder网站的顶部导航栏,我们可以设计一个响应式、简洁且功能齐全的导航栏。Educoder的顶部导航栏通常包括网站的logo、主要导航项(如首页、课程、讨论等)、以及用户操作按钮(如登录、注册等&…...
EasyExcel导出列表
通过easyexcel导出列表数据 根据列表内容自适应宽高。 文件名冲突,修改文件名递增设置。 依赖 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>${easyexcel.version}</version&…...
【unity小技巧】分享vscode如何开启unity断点调试模式,并进行unity断点调试(2024年最新的方法,实测有效)
文章目录 前言一、前置条件1、已安装Visual Studio Code,并且unity首选项>外部工具>外部脚本编辑器选择为Visual Studio Code [版本号],2、在Visual Studio Code扩展中搜索Unity,并安装3、同时注意这个插件下面的描述,需要根…...
【JavaScript】Object.keys() 和 Object.values() 的使用示例和相关的简单应用
值是数字的情况: let n 124; Object.keys(n) // [] Object.values(n) // []值是字符串的情况: let s "abc"; Object.keys(s) // [0, 1, 2] Object.values(s) // [a, b, c]值是数组的情况:(常用) let ar…...
SwiftUI 列表(或 Form)子项中的 Picker 引起导航无法跳转的原因及解决
概述 在 SwiftUI 的界面布局中,列表(List)和 Form 是我们秃头码农们司空见惯的选择。不过大家是否知道:如果将 Picker 之类的视图嵌入到列表或 Form 的子项中会导致导航操作无法被触发。 从上图可以看到:当在 List 的…...
基于ZYNQ-7000系列的FPGA学习笔记8——呼吸灯
基于ZYNQ-7000系列的FPGA学习笔记8——呼吸灯 1. 实验要求2. 功能分析3. 模块设计4. 波形图5.代码编写6. 代码仿真7. 添加约束文件并分析综合 上期内容,我们学习了按键控制蜂鸣器,这一期我们开始学习呼吸灯 1. 实验要求 控制领航者核心板上的led&#x…...
探索 Python 应用的分层依赖:解决 UOS 环境中的 libvirt-python 安装问题
探索 Python 应用的分层依赖:解决 UOS 环境中的 libvirt-python 安装问题 背景Python 版本升级 问题描述原因分析与解决方案 Python 应用的分层依赖:安装与部署的视角libvirt-python的分层依赖尝试的解决方案 使用编译好的 .whl 文件"嫁接"整个…...
网络六边形受到攻击
大家读完觉得有帮助记得关注和点赞!!! 抽象 现代智能交通系统 (ITS) 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 (…...
Flask RESTful 示例
目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题: 下面创建一个简单的Flask RESTful API示例。首先,我们需要创建环境,安装必要的依赖,然后…...
【力扣数据库知识手册笔记】索引
索引 索引的优缺点 优点1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度(创建索引的主要原因)。3. 可以加速表和表之间的连接,实现数据的参考完整性。4. 可以在查询过程中,…...
Oracle查询表空间大小
1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...
MODBUS TCP转CANopen 技术赋能高效协同作业
在现代工业自动化领域,MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步,这两种通讯协议也正在被逐步融合,形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...
【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)
要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况,可以通过以下几种方式模拟或触发: 1. 增加CPU负载 运行大量计算密集型任务,例如: 使用多线程循环执行复杂计算(如数学运算、加密解密等)。运行图…...
C++八股 —— 单例模式
文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全(Thread Safety) 线程安全是指在多线程环境下,某个函数、类或代码片段能够被多个线程同时调用时,仍能保证数据的一致性和逻辑的正确性…...
【Go语言基础【13】】函数、闭包、方法
文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数(函数作为参数、返回值) 三、匿名函数与闭包1. 匿名函数(Lambda函…...
vulnyx Blogger writeup
信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面,gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress,说明目标所使用的cms是wordpress,访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...
[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.
ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #:…...
