最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

logback日志控制服務(wù)器日志輸出過(guò)程

 更新時(shí)間:2025年07月21日 15:03:07   作者:躲在沒(méi)風(fēng)的地方  
文章介紹了SpringBoot中Logback日志配置方法,涵蓋默認(rèn)依賴(lài)、YAML/XML配置方式、MDC上下文信息應(yīng)用、Linux部署注意事項(xiàng)及常見(jiàn)問(wèn)題解決方案,重點(diǎn)強(qiáng)調(diào)日志格式統(tǒng)一處理與權(quán)限配置

logback-spring.xml文件

一、確認(rèn)依賴(lài)(Spring Boot 默認(rèn)集成 Logback)

Spring Boot 默認(rèn)使用 Logback 作為日志框架,無(wú)需額外添加依賴(lài)。

若需自定義配置,可直接編寫(xiě)配置文件。

二 配置 Logback(兩種方式)

通過(guò) application.yml/properties 配置(簡(jiǎn)潔版)

logging:
  level:
    root: INFO           # 全局日志級(jí)別
    com.example: DEBUG   # 自定義包日志級(jí)別
  file:
    path: /var/log/app/  # Linux日志存儲(chǔ)路徑(需提前創(chuàng)建目錄)
  pattern:
    file: "%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n"  # 日志格式
  # 滾動(dòng)策略(按時(shí)間分割)
  logback:
    rollingpolicy:
      file-name-pattern: /var/log/app/app-%d{yyyy-MM}.log.gz
      max-history: 30     # 保留30天日志

方式二:自定義 Logback XML 配置文件(靈活版)

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds">

  <!-- 日志格式 -->
  <property name="LOG_PATH" value="/var/log/app/"/>
  <property name="LOG_NAME" value="app"/>
  
  <!-- 控制臺(tái)輸出 -->
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
    </encoder>
  </appender>
  
  <!-- 滾動(dòng)文件輸出(按時(shí)間分割) -->
  <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${LOG_PATH}${LOG_NAME}.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <fileNamePattern>${LOG_PATH}${LOG_NAME}-%d{yyyy-MM-dd}.log.gz</fileNamePattern>
      <maxHistory>30</maxHistory>
      <totalSizeCap>1GB</totalSizeCap> <!-- 總占用空間 -->
    </rollingPolicy>
    <encoder>
      <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
    </encoder>
  </appender>
  
  <!-- 錯(cuò)誤日志單獨(dú)輸出 -->
  <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
      <level>ERROR</level>
      <onMatch>ACCEPT</onMatch>
      <onMismatch>DENY</onMismatch>
    </filter>
    <file>${LOG_PATH}${LOG_NAME}-error.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <fileNamePattern>${LOG_PATH}${LOG_NAME}-error-%d{yyyy-MM-dd}.log.gz</fileNamePattern>
      <maxHistory>30</maxHistory>
    </rollingPolicy>
    <encoder>
      <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
    </encoder>
  </appender>
  
  <!-- 日志級(jí)別配置 -->
  <root level="INFO">
    <appender-ref ref="STDOUT"/>
    <appender-ref ref="FILE"/>
    <appender-ref ref="ERROR_FILE"/>
  </root>
  
  <!-- 自定義包日志級(jí)別(如調(diào)試指定模塊) -->
  <logger name="com.example" level="DEBUG" additivity="false">
    <appender-ref ref="STDOUT"/>
    <appender-ref ref="FILE"/>
  </logger>

</configuration>

在application.yml中指定配置文件(可選,若文件名是logback-spring.xml則無(wú)需配置)

項(xiàng)目指定輸出日志格式 MDC使用

1 想要輸出指定日志格式:

  [日志輸出時(shí)間戳] [全局ID] [父ID] [本地ID] [線(xiàn)程名] [日志級(jí)別] [tid值] [微服務(wù)托管主機(jī)名/IP] msg在代碼中定義的字段:[微服務(wù)IP及端口] [提供方微服務(wù)名稱(chēng)或編號(hào)] [方法URL] [客戶(hù)端ip][行為場(chǎng)景] [操作主體] [操作類(lèi)型] [操作對(duì)象] [處理結(jié)果] [region]

[2025-05-12 09:25:29.002] [VFeSsNbCSEefRlyvxSR5pg] [0] [VFeSsNbCSEefRlyvxSR5pg] [httpWorkerThread-8001-6] [INFO] [TID: N/A] [NZB23315479/11.204.8.24] [http://11.204.8.24:8001] [xx微服務(wù)/系統(tǒng)] [/log/sayHello] [11.204.8.24] [用戶(hù)行為][gushukuan] [賬號(hào)更新] [user1 name from張**to 李**;moible from 186****1234to 186****5431;idcard from 110***********3210 to 120***********7890] [成功] [0]

2 核心結(jié)論

  • 通用字段(如全局 ID、用戶(hù)信息、客戶(hù)端 IP 等):建議通過(guò)攔截器(Interceptor)、過(guò)濾器(Filter)或 AOP 統(tǒng)一處理,避免在每個(gè)接口中重復(fù)賦值。
  • 接口專(zhuān)屬字段(如操作對(duì)象、行為場(chǎng)景等):需要在具體接口中手動(dòng)賦值(或通過(guò)業(yè)務(wù)邏輯層傳遞到 MDC)。

3 核心

  • MDC 的核心作用是在同一線(xiàn)程的調(diào)用鏈中共享上下文信息(如日志字段),無(wú)需在方法參數(shù)中顯式傳遞,最終通過(guò)日志框架輸出到日志中

4 代碼配置

  • %X{MDC變量}
<configuration>
    <!-- 控制臺(tái)輸出 -->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!-- 定義日志格式,嚴(yán)格按需求順序排列字段 -->
            <pattern>
                [%d{yyyy-MM-dd HH:mm:ss.SSS}] [%X{globalId}] [%X{parentId}] [%X{localId}] [%thread] [%level] [%X{tid}] [%hostName/%X{serverIp}] [%X{serviceUrl}] [%X{serviceName}] [%X{methodUrl}] [%X{clientIp}] [%X{scene}] [%X{operator}] [%X{operation}] [%msg] [%X{result}] [%X{region}]%n
            </pattern>
        </encoder>
    </appender>

    <!-- 根日志級(jí)別 -->
    <root level="INFO">
        <appender-ref ref="CONSOLE" />
    </root>
</configuration>

5 映射區(qū)別

  • %X{變量}:%X 用于訪問(wèn) MDC(Mapped Diagnostic Context,映射診斷上下文)中存放的鍵值對(duì)。MDC 是一個(gè)線(xiàn)程安全的集合,允許應(yīng)用程序在運(yùn)行時(shí)將自定義的診斷信息與日志記錄關(guān)聯(lián)起來(lái)。通過(guò) %X{變量名} 可以獲取 MDC 中對(duì)應(yīng)變量名的值 。比如,在代碼中設(shè)置一些與請(qǐng)求相關(guān)的上下文信息(如請(qǐng)求 ID、用戶(hù) ID 等),方便在日志中追蹤特定請(qǐng)求的處理情況。
  • %hostName:%hostName 是 Logback 提供的一種內(nèi)置的轉(zhuǎn)換字,用于獲取當(dāng)前運(yùn)行日志程序的主機(jī)名 。它是 Logback 根據(jù)運(yùn)行環(huán)境直接獲取的固定信息,不需要手動(dòng)在代碼中設(shè)置特定的上下文來(lái)賦值。

三、Linux 服務(wù)器部署注意事項(xiàng)

1. 創(chuàng)建日志目錄并設(shè)置權(quán)限

  • 在Linux服務(wù)器創(chuàng)建日志目錄(需與配置中的路徑一致)
mkdir -p /var/log/app
  • 賦予讀寫(xiě)權(quán)限(假設(shè)應(yīng)用以tomcat用戶(hù)運(yùn)行)
chown -R tomcat:tomcat /var/log/app
chmod -R 755 /var/log/app

2. 打包與啟動(dòng)應(yīng)用

  • 打包Spring Boot應(yīng)用
mvn clean package -DskipTests
  • 上傳jar包到服務(wù)器并啟動(dòng)
nohup java -jar app.jar > /dev/null 2>&1 &
  • 查看日志
tail -f /var/log/app/app.log

3. 日志滾動(dòng)與管理

  • 自動(dòng)分割:Logback 會(huì)按配置定期生成新日志文件,并壓縮舊文件(如app-2025-06-27.log.gz)。
  • 手動(dòng)清理:可添加定時(shí)任務(wù)(crontab)刪除過(guò)期日志:

每天凌晨1點(diǎn)清理60天前的日志

0 1 * * * find /var/log/app -name “*.log.gz” -mtime +60 -exec rm {} ;

四、常見(jiàn)問(wèn)題與解決方案

日志文件未生成

  • 檢查 Linux 路徑是否存在,應(yīng)用用戶(hù)是否有寫(xiě)入權(quán)限(使用ls -la /var/log/app查看權(quán)限)。
  • 確認(rèn)配置文件中的路徑是否與實(shí)際一致,可嘗試使用絕對(duì)路徑(如/home/app/logs/)。

日志級(jí)別未生效

  • 檢查配置文件中l(wèi)evel是否正確,自定義包路徑是否匹配(如com.example需與項(xiàng)目包名一致)。

中文日志亂碼

在 Logback 配置中添加編碼設(shè)置:

UTF-8

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 基于SpringBoot和Vue3的博客平臺(tái)文章詳情與評(píng)論功能實(shí)現(xiàn)

    基于SpringBoot和Vue3的博客平臺(tái)文章詳情與評(píng)論功能實(shí)現(xiàn)

    在前面的教程中,我們已經(jīng)實(shí)現(xiàn)了基于Spring Boot和Vue3的發(fā)布、編輯、刪除文章功能以及文章列表與分頁(yè)功能。本教程將引導(dǎo)您實(shí)現(xiàn)博客平臺(tái)的文章詳情與評(píng)論功能,需要的朋友可以參考一下
    2023-04-04
  • Java 線(xiàn)程相關(guān)總結(jié)

    Java 線(xiàn)程相關(guān)總結(jié)

    這篇文章主要介紹了Java 線(xiàn)程的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用Java,感興趣的朋友可以了解下
    2021-02-02
  • 詳解Java8如何使用Lambda表達(dá)式進(jìn)行比較

    詳解Java8如何使用Lambda表達(dá)式進(jìn)行比較

    Lambda表達(dá)式,也可稱(chēng)為閉包,是java8的新特性,作用是取代大部分內(nèi)部類(lèi),優(yōu)化java代碼結(jié)構(gòu),讓代碼變得更加簡(jiǎn)潔緊湊。本文將利用Lambda表達(dá)式進(jìn)行排序比較,需要的可以參考一下
    2022-01-01
  • Java Integer[]和int[]互相轉(zhuǎn)換方式

    Java Integer[]和int[]互相轉(zhuǎn)換方式

    這篇文章主要介紹了Java Integer[]和int[]互相轉(zhuǎn)換方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • Spring?Boot開(kāi)發(fā)RESTful接口與http協(xié)議狀態(tài)表述

    Spring?Boot開(kāi)發(fā)RESTful接口與http協(xié)議狀態(tài)表述

    這篇文章主要為大家介紹了Spring?Boot開(kāi)發(fā)RESTful接口與http協(xié)議狀態(tài)表述,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-03-03
  • Java實(shí)現(xiàn)簡(jiǎn)單郵件發(fā)送功能

    Java實(shí)現(xiàn)簡(jiǎn)單郵件發(fā)送功能

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)簡(jiǎn)單郵件發(fā)送功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • Java CAS機(jī)制的一些理解

    Java CAS機(jī)制的一些理解

    這篇文章主要介紹了Java CAS機(jī)制的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用Java,感興趣的朋友可以了解下
    2021-05-05
  • Java編程讀寫(xiě)鎖詳解

    Java編程讀寫(xiě)鎖詳解

    本篇文章給大家詳細(xì)分享了Java編程讀寫(xiě)鎖的相關(guān)原理以及知識(shí)點(diǎn)內(nèi)容,有興趣的朋友們可以參考下。
    2018-08-08
  • Spring Cloud Alibaba Nacos Config加載配置詳解流程

    Spring Cloud Alibaba Nacos Config加載配置詳解流

    這篇文章主要介紹了Spring Cloud Alibaba Nacos Config配置中心實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-07-07
  • SpringBoot使用外置的Servlet容器的方法步驟

    SpringBoot使用外置的Servlet容器的方法步驟

    SpringBoot 是一個(gè)非常流行的 Java 開(kāi)發(fā)框架,它提供了一個(gè)簡(jiǎn)單而強(qiáng)大的方式來(lái)創(chuàng)建基于 Servlet 容器的 Web 應(yīng)用程序,本文將介紹 SpringBoot 中如何使用 Servlet 容器,需要的朋友可以參考下
    2024-12-12

最新評(píng)論

庆元县| 赫章县| 尼勒克县| 乌兰察布市| 寿光市| 乌恰县| 民乐县| 察雅县| 蓬莱市| 禄劝| 台东市| SHOW| 鹤峰县| 汾西县| 建始县| 德州市| 宁陕县| 类乌齐县| 安吉县| 确山县| 平塘县| 马公市| 桑日县| 阿克苏市| 兴和县| 新邵县| 榆林市| 宜川县| 宜州市| 毕节市| 宁远县| 淅川县| 黎川县| 英吉沙县| 梧州市| 建昌县| 吉隆县| 博罗县| 永川市| 磐石市| 正宁县|