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

详解日志格式配置: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.propertiesapplication.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... |


五、总结与最佳实践

  1. 颜色和格式

    • 使用 Logback 提供的 ANSI 转义码,可以轻松为日志输出添加颜色,帮助开发人员快速定位问题。
    • 日志格式中可以控制时间戳、日志级别、记录器、消息内容等部分的颜色,使日志更具可读性。
  2. 字符数限制

    • 通过限制字段长度(如 %logger{36}%M{10}),可以避免日志输出过长,影响日志的整洁性。
  3. 适用场景

    • logback.xml 更适用于复杂的日志配置和多种输出形式(如文件、控制台)。
    • application.propertiesapplication.yml 提供简单而有效的方式来配置 Spring Boot 项目的日志格式。

通过合理配置日志格式,开发人员可以大大提高日志的可读性和可维护性,有效帮助项目的调试与运维。

相关文章:

详解日志格式配置:XML 与 Spring Boot 配置文件格式

详解日志格式配置&#xff1a;XML 与 Spring Boot 配置文件格式 日志是现代应用程序中不可或缺的一部分&#xff0c;通过定制化日志格式和颜色&#xff0c;开发人员可以更方便地调试和监控应用。本文将深入讲解如何在 XML 配置文件 和 Spring Boot 配置文件 中设置日志格式&am…...

JDK21新特性

目录 虚拟线程&#xff08;JEP 444&#xff09;&#xff1a; 顺序集合&#xff08;JEP 431&#xff09;&#xff1a; 字符串模板&#xff08;JEP 430&#xff09;&#xff1a; 模式匹配的增强&#xff08;JEP 440、441以及443&#xff09;&#xff1a; 结构化并发和作用域值…...

SqlDataAdapter

SqlDataAdapter 是 .NET Framework 和 .NET Core 中提供的一个数据适配器类&#xff0c;属于 System.Data.SqlClient 命名空间&#xff08;或在 .NET 6 中属于 Microsoft.Data.SqlClient 命名空间&#xff09;。它的作用是充当数据源&#xff08;如 SQL Server 数据库&#xff…...

AI赋能:构建安全可信的智能电子档案库

在档案的政策与法规上&#xff0c;《中华人民共和国档案法》2020年修订新增&#xff0c;对电子档案的合法要件、地位和作用、安全管理要求和信息化系统建设等方面作出了明确规定&#xff0c;保障数字资源的安全保存和有效利用。 日前&#xff0c;国家档案局令第22号公布《电子…...

分类预测 | PSO-PNN粒子群优化概率神经网络多特征分类预测

分类预测 | PSO-PNN粒子群优化概率神经网络多特征分类预测 目录 分类预测 | PSO-PNN粒子群优化概率神经网络多特征分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Matlab实现PSO-PNN粒子群优化概率神经网络多特征分类预测&#xff0c;运行环境Matlab2018b及以…...

AcWing 3416. 时间显示

文章目录 前言代码思路 前言 这种我最担心的就是一些语法格式忘掉了。还有 int ,long long 的数据范围我记得不是很清楚&#xff0c;印象中 int 是 20 亿左右&#xff0c;long long 不行就得用数组来存这个数字了。int,long long数据类型及数值范围。好像没记错&#xff0c;记…...

【软考速通笔记】系统架构设计师⑲——专业英语

文章目录 一、前言二、常用名词三、架构风格四、非功能需求五、应用架构六、软件架构重用 一、前言 笔记目录大纲请查阅&#xff1a;【软考速通笔记】系统架构设计师——导读 二、常用名词 名词翻译architecture架构system系统design设计requirements需求components组件constr…...

java注解(二):注解的解析以及应用场景、用注解和反射模拟junit框架代码演示

目录 1、什么是注解的解析&#xff1f; 2、解析注解的案例 1、自定义一个注解 2、在类和方法上使用自己定义的注解 3、解析注解 3、模拟Junit框架案例 1、自定义一个MyTest注解 2、定义一个测试类&#xff0c;使用自定义的注解 3、写一个启动类 本文章主要讲解什么是注…...

C# 命名空间(Namespace)

文章目录 前言一、命名空间的定义与使用基础&#xff08;一&#xff09;定义语法与规则&#xff08;二&#xff09;调用命名空间内元素 二、using 关键字三、嵌套命名空间 前言 命名空间&#xff08;Namespace&#xff09;在于提供一种清晰、高效的方式&#xff0c;将一组名称与…...

几个Linux系统安装体验: centos7系统服务版

本文介绍CentOS7服务版本的安装。 前言 当前国产操作系统版本众多&#xff0c;但根据笔者多年的实践经验得到的认知&#xff0c;最好能抓住底层逻辑&#xff0c;上下打通打透&#xff0c;拉齐表现和本质&#xff0c;就能在纷扰版本中看得清清楚楚&#xff0c;明明白白&#xf…...

ViT学习笔记(一) 基本的原理和框架结构

原论文地址&#xff1a;https://arxiv.org/pdf/2010.11929 首先大致通读一下原论文&#xff0c;这是很有必要的&#xff0c;但不必完全读懂&#xff0c;因为会有高手给我们解读&#xff0c;比如&#xff1a; 【Transformer系列】深入浅出理解ViT(Vision Transformer)模型-CSD…...

fedora下Jetbrains系列IDE窗口中文乱码解决方法

可以看到窗口右部分的中文内容为小方块。 进入 Settings - Appearance & Behavior - Appearance - Use custom font : Note Sans Mono CJK SC &#xff0c;设置后如下图&#xff1a;...

nginx根据报文里字段转发至不同地址

nginx接收到post请求.请求报文里是一个json字符串&#xff0c;字符串里有个字段id。 根据id不同&#xff0c;转发到不同地址。 如果idaaa,转发到www.aaa.com.test 如果idbbb,转发到www.bbb.com.test 如何配置,请提供一个nginx.conf 要在 Nginx 中根据 POST 请求的 JSON 负载中的…...

使用 html/css 实现 educoder 顶部导航栏的步骤和方法

要使用HTML和CSS实现一个类似于Educoder网站的顶部导航栏&#xff0c;我们可以设计一个响应式、简洁且功能齐全的导航栏。Educoder的顶部导航栏通常包括网站的logo、主要导航项&#xff08;如首页、课程、讨论等&#xff09;、以及用户操作按钮&#xff08;如登录、注册等&…...

EasyExcel导出列表

通过easyexcel导出列表数据 根据列表内容自适应宽高。 文件名冲突&#xff0c;修改文件名递增设置。 依赖 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>${easyexcel.version}</version&…...

【unity小技巧】分享vscode如何开启unity断点调试模式,并进行unity断点调试(2024年最新的方法,实测有效)

文章目录 前言一、前置条件1、已安装Visual Studio Code&#xff0c;并且unity首选项>外部工具>外部脚本编辑器选择为Visual Studio Code [版本号]&#xff0c;2、在Visual Studio Code扩展中搜索Unity&#xff0c;并安装3、同时注意这个插件下面的描述&#xff0c;需要根…...

【JavaScript】Object.keys() 和 Object.values() 的使用示例和相关的简单应用

值是数字的情况&#xff1a; let n 124; Object.keys(n) // [] Object.values(n) // []值是字符串的情况&#xff1a; let s "abc"; Object.keys(s) // [0, 1, 2] Object.values(s) // [a, b, c]值是数组的情况&#xff1a;&#xff08;常用&#xff09; let ar…...

SwiftUI 列表(或 Form)子项中的 Picker 引起导航无法跳转的原因及解决

概述 在 SwiftUI 的界面布局中&#xff0c;列表&#xff08;List&#xff09;和 Form 是我们秃头码农们司空见惯的选择。不过大家是否知道&#xff1a;如果将 Picker 之类的视图嵌入到列表或 Form 的子项中会导致导航操作无法被触发。 从上图可以看到&#xff1a;当在 List 的…...

基于ZYNQ-7000系列的FPGA学习笔记8——呼吸灯

基于ZYNQ-7000系列的FPGA学习笔记8——呼吸灯 1. 实验要求2. 功能分析3. 模块设计4. 波形图5.代码编写6. 代码仿真7. 添加约束文件并分析综合 上期内容&#xff0c;我们学习了按键控制蜂鸣器&#xff0c;这一期我们开始学习呼吸灯 1. 实验要求 控制领航者核心板上的led&#x…...

探索 Python 应用的分层依赖:解决 UOS 环境中的 libvirt-python 安装问题

探索 Python 应用的分层依赖&#xff1a;解决 UOS 环境中的 libvirt-python 安装问题 背景Python 版本升级 问题描述原因分析与解决方案 Python 应用的分层依赖&#xff1a;安装与部署的视角libvirt-python的分层依赖尝试的解决方案 使用编译好的 .whl 文件"嫁接"整个…...

【Python】 -- 趣味代码 - 小恐龙游戏

文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...

Nuxt.js 中的路由配置详解

Nuxt.js 通过其内置的路由系统简化了应用的路由配置&#xff0c;使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...

【决胜公务员考试】求职OMG——见面课测验1

2025最新版&#xff01;&#xff01;&#xff01;6.8截至答题&#xff0c;大家注意呀&#xff01; 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:&#xff08; B &#xff09; A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...

【HTTP三个基础问题】

面试官您好&#xff01;HTTP是超文本传输协议&#xff0c;是互联网上客户端和服务器之间传输超文本数据&#xff08;比如文字、图片、音频、视频等&#xff09;的核心协议&#xff0c;当前互联网应用最广泛的版本是HTTP1.1&#xff0c;它基于经典的C/S模型&#xff0c;也就是客…...

聊一聊接口测试的意义有哪些?

目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开&#xff0c;首…...

vue3+vite项目中使用.env文件环境变量方法

vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量&#xff0c;这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...

《C++ 模板》

目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板&#xff0c;就像一个模具&#xff0c;里面可以将不同类型的材料做成一个形状&#xff0c;其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式&#xff1a;templa…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

day36-多路IO复用

一、基本概念 &#xff08;服务器多客户端模型&#xff09; 定义&#xff1a;单线程或单进程同时监测若干个文件描述符是否可以执行IO操作的能力 作用&#xff1a;应用程序通常需要处理来自多条事件流中的事件&#xff0c;比如我现在用的电脑&#xff0c;需要同时处理键盘鼠标…...

wpf在image控件上快速显示内存图像

wpf在image控件上快速显示内存图像https://www.cnblogs.com/haodafeng/p/10431387.html 如果你在寻找能够快速在image控件刷新大图像&#xff08;比如分辨率3000*3000的图像&#xff09;的办法&#xff0c;尤其是想把内存中的裸数据&#xff08;只有图像的数据&#xff0c;不包…...