👉 這是一個或許對你有用的社群
《專案實戰(影片)》:從書中學,往事上“練” 《網際網路高頻面試題》:面朝簡歷學習,春暖花開 《架構 x 系統設計》:摧枯拉朽,掌控面試高頻場景題 《精進 Java 學習指南》:系統學習,網際網路主流技術棧 《必讀 Java 原始碼專欄》:知其然,知其所以然

👉這是一個或許對你有用的開源專案國產 Star 破 10w+ 的開源專案,前端包括管理後臺 + 微信小程式,後端支援單體和微服務架構。功能涵蓋 RBAC 許可權、SaaS 多租戶、資料許可權、商城、支付、工作流、大屏報表、微信公眾號、ERP、CRM、AI 大模型等等功能:
Boot 多模組架構:https://gitee.com/zhijiantianya/ruoyi-vue-pro Cloud 微服務架構:https://gitee.com/zhijiantianya/yudao-cloud 影片教程:https://doc.iocoder.cn 【國內首批】支援 JDK 17/21 + SpringBoot 3.3、JDK 8/11 + Spring Boot 2.7 雙版本
前言
日誌排查,是系統故障排除必不可少的重要環節,Springboot3.4.0版本釋出之後,支援日誌結構化,它支援
Elastic Common Schema
(ECS)和Logstash格式,但也可以使用自己需要的日誌格式進行擴充套件基於 Spring Boot + MyBatis Plus + Vue & Element 實現的後臺管理系統 + 使用者小程式,支援 RBAC 動態許可權、多租戶、資料許可權、工作流、三方登入、支付、簡訊、商城等功能
專案地址:https://github.com/YunaiV/ruoyi-vue-pro 影片教程:https://doc.iocoder.cn/video/
日誌結構化
ecs控制檯列印
一般情況下,Springboot列印日誌是以下格式

在
application.properties
配置
logging.structured.format.console=ecs
日誌在控制檯輸出是以下格式

結構化日誌寫到檔案
Springboot3.4.0版本支援將結構化日誌寫到日誌檔案裡面去,在
application.properties
配置
logging.structured.format.file=ecs
logging.file.name=./demo-log.log
會有日誌檔案生成

檔案內容為

自定義日誌結構化
Springboot3.4.x版本提供了
StructuredLogFormatter
介面自定義日誌格式化
只有Springboot3.4.0才支援
定義一個日誌類
package
cn.com.ut.cloud.demolog.config;
import
ch.qos.logback.classic.spi.ILoggingEvent;
import
org.springframework.boot.logging.structured.StructuredLogFormatter;
publicclassMyStructuredLoggingFormatterimplementsStructuredLogFormatter<ILoggingEvent>
{
@Override
public String format(ILoggingEvent event)
{
return"time="
+ event.getTimeStamp() +
",level="
+ event.getLevel() +
",message="
+ event.getMessage() +
"\n"
;
}
}
然後再
application-properties
配置
logging.structured.format.console=cn.com.ut.cloud.demolog.config.MyStructuredLoggingFormatter
這個時候,日誌會按我們需要的進行列印

日誌結構化配置
Springboot3.4.x版本支援以下配置
logging.structured.ecs.service.name=MyApp
logging.structured.ecs.service.version=1
logging.structured.ecs.service.environment=Production
logging.structured.ecs.service.node-name=Primary
會在日誌列印輸出

而且支援MDC列印
package
cn.com.ut.cloud.demolog.config;
import
org.slf4j.Logger;
import
org.slf4j.LoggerFactory;
import
org.slf4j.MDC;
import
org.springframework.boot.CommandLineRunner;
import
org.springframework.stereotype.Component;
import
java.util.UUID;
@Component
classMyLoggerimplementsCommandLineRunner
{
privatestaticfinal
Logger logger = LoggerFactory.getLogger(MyLogger
.class)
;
@Override
publicvoidrun(String... args)
{
MDC.put(
"userId"
, UUID.randomUUID().toString());
logger.info(
"hello world=================="
);
MDC.remove(
"userId"
);
}
}
會有id列印

基於 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 實現的後臺管理系統 + 使用者小程式,支援 RBAC 動態許可權、多租戶、資料許可權、工作流、三方登入、支付、簡訊、商城等功能
專案地址:https://github.com/YunaiV/yudao-cloud 影片教程:https://doc.iocoder.cn/video/
總結
結構化日誌可以幫助在開發過程中,更好的定義日誌輸出等,至於需不需要,就各自系統開發需求
歡迎加入我的知識星球,全面提升技術能力。
👉 加入方式,“長按”或“掃描”下方二維碼噢:

星球的內容包括:專案實戰、面試招聘、原始碼解析、學習路線。





文章有幫助的話,在看,轉發吧。
謝謝支援喲 (*^__^*)