详解日志格式配置: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 文件"嫁接"整个…...

OpenCV-平滑图像
二维卷积(图像滤波) 与一维信号一样,图像也可以通过各种低通滤波器(LPF)、高通滤波器(HPF)等进行过滤。LPF 有助于消除噪音、模糊图像等。HPF 滤波器有助于在图像中找到边缘。 opencv 提供了函数 **cv.filter2D()**&…...

解决跨域问题方案
跨域问题在前后端分离架构下尤为常见,是每个 Web 开发者都会遇到的核心问题。本文将通过原理解析、场景剖析、解决方案详解以及最佳实践等多个维度,帮助开发者全面理解并有效应对跨域问题。 目录 **一、跨域的本质****1. 同源策略****2. 同源策略的限制范…...

云计算介绍_3(计算虚拟化——cpu虚拟化、内存虚拟化、io虚拟化、常见集群策略、华为FC)
计算虚拟化 1.计算虚拟化介绍1.1 计算虚拟化 分类(cpu虚拟化、内存虚拟化、IO虚拟化)1.2 cpu虚拟化1.3 内存虚拟化1.4 IO虚拟化1.5 常见的集群的策略1.6 华为FC 1.计算虚拟化介绍 1.1 计算虚拟化 分类(cpu虚拟化、内存虚拟化、IO虚拟化&#…...

软件工程复习记录
基本概念 软件工程三要素:方法、工具、过程 软件开发方法:软件开发所遵循的办法和步骤,以保证所得到的运行系统和支持的文档满足质量要求。 软件开发过程管理 软件生命周期:可行性研究、需求分析、概要设计、详细设计、编码、测…...

俩Nim游戏
1.给定n堆石子,每堆石子有xi快,两位玩家轮流操作,每次操作可以从任意一堆石子中拿走任意数量的石子(可以拿完,但不能不拿),最后无法进行操作的人视为失败。 问如果两人都采用最优策略ÿ…...

基于超级电容和电池的新能源汽车能量管理系统simulink建模与仿真
目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 4.1 超级电容特性 4.2 电池特性 5.完整工程文件 1.课题概述 基于超级电容和电池的新能源汽车能量管理系统simulink建模与仿真。分析不同车速对应的电池,超级电容充放电变化情况。 2.系统仿…...

数据结构——图(遍历,最小生成树,最短路径)
目录 一.图的基本概念 二.图的存储结构 1.邻接矩阵 2.邻接表 三.图的遍历 1.图的广度优先遍历 2.图的深度优先遍历 四.最小生成树 1.Kruskal算法 2.Prim算法 五.最短路径 1.单源最短路径--Dijkstra算法 2.单源最短路径--Bellman-Ford算法 3.多源最短路径--Floyd-…...

002-NoSQL介绍
目录 一、NoSQL 简介 二、NoSQL 特性 三、NoSQL 的工作原理 四、NoSQL 有哪些类型 五、NoSQL数据库与关系型数据库的区别 六、常见的非关系型数据库NOSQL分类 一、NoSQL 简介 NoSQL,全称为Not Only SQL,指的是非关系型的数据库。NoSQL有时也称作Not Only SQL的缩写,是…...

qt-everywher交叉编译e-src-5.15.2
简化配置的方式: 你完全可以通过直接配置 安装目录、编译链 和 目标架构 来完成交叉编译,而不需要修改 mkspecs 配置。以下是如何通过简化配置来进行交叉编译 Qt 的步骤。 准备交叉编译工具链 首先,确保你已经安装了交叉编译工具链ÿ…...

4.STM32通信接口之SPI通信(含源码)---硬件SPI与W25Q64存储模块通信实战《精讲》
开胃简介 根据上一节对STM32的SPI介绍!本节将进行硬件SPI的实现,片选用软件实现!跟着Whappy走起!W25Q64的驱动层,我们不需要更改,仅仅需要更改一下SPI的协议,即:由软件实现改成硬件…...