详解日志格式配置: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 项目的日志格式。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/63222.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

KernelShark在ubuntu24.04.01的编译

KernelShark在ubuntu24.04.01的编译 写在前面具体过程装ubuntu24.04.01安装depends下载代码如何编译cmake 输出make 输出 如何安装 初步启动Add the User to the perf Group 简单的使用trace-cmd抓包 来看我的文章&#xff0c;必有所得。 平凡中&#xff0c;总有我帮您踩过的坑…

Ionic 8.4 简介

Ionic 是一个用于开发混合移动应用、渐进式Web应用&#xff08;PWA&#xff09;以及桌面应用的开源框架。它结合了 Angular、React 或 Vue.js 等现代前端框架与 Cordova/PhoneGap 的力量&#xff0c;允许开发者使用 Web 技术&#xff08;HTML, CSS, JavaScript&#xff09;构建…

浏览器数据存储方法深度剖析:LocalStorage、IndexedDB、Cookies、OPFS 与 WASM - SQLite

在当今的 Web 开发领域&#xff0c;选择合适的浏览器数据存储方法对于构建高效、功能丰富的应用程序至关重要。随着 Web 应用的不断演进&#xff0c;从早期的静态 HTML 页面到如今复杂的单页应用和本地优先应用&#xff0c;数据存储需求也日益多样化。本文将深入探讨 LocalStor…

要使用 OpenResty 创建一个接口,返回客户端的 IP 地址,并以 JSON 格式输出

要使用 OpenResty 创建一个接口&#xff0c;返回客户端的 IP 地址&#xff0c;并以 JSON 格式输出 要使用 OpenResty 创建一个接口&#xff0c;返回客户端的 IP 地址&#xff0c;并以 JSON 格式输出方案一解决方案&#xff08;openresty使用cjson&#xff09;说明&#xff1a;使…

解决Unity编辑器Inspector视图中文注释乱码

1.问题介绍 新创建一个脚本&#xff0c;用VS打开编辑&#xff0c;增加一行中文注释保存&#xff0c;在Unity中找到该脚本并选中&#xff0c;Inspector视图中预览的显示内容&#xff0c;该中文注释显示为乱码&#xff0c;如下图所示&#xff1a; 2.图示解决步骤 按上述步骤操作…

【AIGC半月报】AIGC大模型启元:2024.12(上)

【AIGC半月报】AIGC大模型启元&#xff1a;2024.12&#xff08;上&#xff09; &#xff08;1&#xff09;OpenAI-12日发布会&#xff08;持续更新中........&#xff09;Day01-12.06&#xff1a;o1满血版上线&#xff08;已发布&#xff09;Day02-12.07&#xff1a;强化微调&a…

JDK21新特性

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

【linux 查看网卡设备信息命令记录】

查看设备信息命令 查看网卡芯片相关platform类型网卡(gmac网卡为例)PCI网卡(rtl8125为例) 查看网卡芯片相关 platform类型网卡(gmac网卡为例) gmac 属于CPU资源的一部分&#xff0c;属于平台设备。下面以FT2004 的CPU为例&#xff0c;自带GMAC0和GMAC1。 1、通过平台设备查看…

字节码

字节码 1、字节码文件概述 1.1、字节码文件是跨平台的吗&#xff1f; ​ Java 虚拟机不和包括 Java 在内的任何语言绑定&#xff0c;它只与“Class 文件”这种特定的二进制文件格式所关联。 ​ 无论使用何种语言进行软件开发&#xff0c;只要能将源文件编译为正确的Class文件…

nodejs后端项目使用pm2部署

nodejs后端项目使用pm2部署 安装pm2 npm install pm2 -g查看版本号 pm2 --version启动项目 pm2 start app.js# 设置别名 pm2 start app.js --name demo停止项目 pm2 stop [AppName] pm2 stop [ID]# 停止所有项目 pm2 stop all重启项目 pm2 restart [AppName] pm2 re…

运算符与表达式——培训记录

0.引入 1.计算机通过计算去解决问题的。 Q&#xff1a;这个计算到底是按照什么方式去进行计算的&#xff1f; A&#xff1a;通过各种运算符去进行计算。 --->运算符与表达式 1.运算符 1.运算符&#xff1a;用来进行某种运算的符号。如: - * / % 2.几目运算符&#xf…

排查bug的通用思路

⭐️前言⭐️ APP点击某个按钮没有反应/PC端执行某个操作后&#xff0c;响应较慢&#xff0c;通用的问题排查方法: 从多个角度来排查问题 &#x1f349;欢迎点赞 &#x1f44d; 收藏 ⭐留言评论 &#x1f349;博主将持续更新学习记录收获&#xff0c;友友们有任何问题可以在评…

AI 建站:Durable

网址&#xff1a;https://app.durable.co 步骤 1) 登录 2&#xff09;点击创建新业务 3&#xff09;填写信息后&#xff0c;点击创建 4&#xff09;进入业务 5&#xff09;生成网站 6&#xff09;生成完成后不满意的话可以自己调整 7&#xff09;点击保存 8&#xff09;发布 …

部署kafka并通过python操作

目录 一、安装JDK1.81、检查服务器是否已安装JDK2、若已安装JDK&#xff0c;进行卸载3、更新yum源4、搜索JDK1.8安装包5、安装JDK1.86、查看是否安装成功7、配置环境变量 二、安装Kafka1、下载并解压kafka部署包至/usr/local/目录2、修改server.properties3、修改/etc/profile4…

【Linux】 进程池 一主多从 管道通信

目录 1.代码介绍 2.channel 类 3.进程池类编写 4.主函数及其他 5. 源码 1.代码介绍 本文代码采用一主多从式&#xff08;一个主进程&#xff08;master&#xff09;多个子进程&#xff08;worker&#xff09;&#xff09;通过管道进行通信&#xff0c;实现主进程分发任务&…

Ubuntu环境安装RabbitMQ

1.安装Erlang RabbitMq需要Erlang语⾔的⽀持&#xff0c;在安装rabbitMq之前需要安装erlang # 更新软件包 sudo apt-get update # 安装 erlang sudo apt-get install erlang 查看erlang版本 : erl 退出命令:halt(). 2. 安装RabbitMQ # 更新软件包 sudo apt-get update # 安装 …

集合框架(3)Map

Map接口 现实生活与开发中&#xff0c;我们常会看到这样的一类集合&#xff1a;用户ID与账户信息、学生姓名与考试成绩、IP地址与主机名等&#xff0c;这种一一对应的关系&#xff0c;就称作映射。Java提供了专门的集合框架用来存储这种映射关系的对象&#xff0c;即java.util…

力扣--199.二叉树的右视图

题目 给定一个二叉树的 根节点 root&#xff0c;想象自己站在它的右侧&#xff0c;按照从顶部到底部的顺序&#xff0c;返回从右侧所能看到的节点值。 提示: 二叉树的节点个数的范围是 [0,100] -100 < Node.val < 100 代码 class Solution { public List rightSideV…

Ubuntu Server 22.04.5 LTS重启后IP被重置问题

Ubuntu Server 22.04.5 LTS重启后IP被重置问题 最近在使用Ubuntu Server 22.04做项目开发测试时发现每次重启和关机后&#xff0c;所设置的静态IP地址都会回复到安装系统时所设置的ip Ubuntu Server 22.04 官网下载地址&#xff1a;Ubuntu官方下载地址 对虚拟机下安装Ubuntu感…

Python+OpenCV系列:Python和OpenCV的结合和发展

PythonOpenCV系列&#xff1a;Python和OpenCV的结合和发展 **引言****Python语言的发展****1.1 Python的诞生与发展****1.2 Python的核心特性与优势****1.3 Python的应用领域** **OpenCV的发展****2.1 OpenCV的起源与发展****2.2 OpenCV的功能特性****2.3 OpenCV的应用场景** *…