欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

logback-spring.xml配置解析(最新整理)

 更新時(shí)間:2025年07月14日 14:44:16   作者:☆池魚不吃魚  
logback-spring.xml用于配置Spring?Boot項(xiàng)目日志,定義輸出格式、路徑、級(jí)別,支持動(dòng)態(tài)參數(shù)讀?。ㄈ鏢pringProperty),實(shí)現(xiàn)日志隔離與滾動(dòng)策略(按天+大?。?并通過(guò)logger繼承機(jī)制控制日志輸出目的地,對(duì)logback-spring.xml配置相關(guān)知識(shí)感興趣的朋友一起看看吧

logback-spring.xml 文件是 Spring Boot 項(xiàng)目中用于配置日志框架 Logback 的配置文件。它定義了日志的輸出格式、輸出位置、日志級(jí)別等信息。
以下是整個(gè)文件的結(jié)構(gòu)化解釋:

 一、全局配置

<configuration scan="true" scanPeriod="60 seconds" debug="false">
  • scan="true":?jiǎn)⒂米詣?dòng)掃描配置文件變化,便于熱更新。
  • scanPeriod="60 seconds":每 60 秒檢查一次配置是否變更。
  • debug="false":不打印 Logback 內(nèi)部狀態(tài)調(diào)試信息。

 二、變量定義與讀取

1. 從 Spring 上下文中讀取配置(如 bootstrap.yml)

<springProperty scope="context" name="logPath" source="logging.path" defaultValue="../logs"/>
<springProperty scope="context" name="logLevelRoot" source="logging.level.root" defaultValue="INFO"/>
<springProperty scope="context" name="logLevelTrade" source="logging.level.trade" defaultValue="INFO"/>
<springProperty scope="context" name="logLevelSign" source="logging.level.sign" defaultValue="INFO"/>
  • 使用 <springProperty> 可以從 Spring 配置文件中讀取值,如:
    • 日志路徑:logging.path
    • 日志級(jí)別:logging.level.root, logging.level.trade, logging.level.sign
  • 如果未在配置文件中指定,則使用 defaultValue 中的默認(rèn)值。

2. 自定義常量

<property name="moduleid" value="8176"/>
<property name="modulename" value="IALLO_GATEWAY"/>
  • 定義模塊 ID 和名稱,供后續(xù)日志文件名和格式中引用。

三、Appender 定義(日志輸出目的地)

1. 控制臺(tái)輸出:console

<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
        <pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}][%X{bizSeqNo}][%level][%thread] - [${moduleid}][${modulename}]%m%n</pattern>
    </encoder>
</appender>
  • 輸出到控制臺(tái)。
  • 格式包含時(shí)間戳、MDC上下文中的 bizSeqNo、日志級(jí)別、線程名、模塊信息等。

2. 主日志文件:INFO

<appender name="INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${logPath}/${moduleid}_${modulename}.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
		<fileNamePattern>${logPath}/${moduleid}_${modulename}.log.%d{yyyy-MM-dd}-%i</fileNamePattern>
		<maxFileSize>500MB</maxFileSize>
		<MaxHistory>30</MaxHistory>
	</rollingPolicy>
    <encoder>...</encoder>
</appender>
  • 輸出到主日志文件,按天和大小滾動(dòng)(最大 500MB,保留30天)。
  • 文件名示例:GATEWAY.log、GATEWAY.log.2024-04-05-1
  • 主日志 = <root> logger + 它綁定的 appender
  • 名稱只是標(biāo)識(shí)符,真正起作用的是引用關(guān)系和配置內(nèi)容
  • 可以通過(guò)重命名來(lái)實(shí)現(xiàn)更清晰的結(jié)構(gòu),但一定要記得同步更新引用!

3. 自定義日志文件:TRADE_INFO

<appender name="TRADE_INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
    ...
</appender>
  • 專用于記錄名為 trade 的 logger 的日志。

四、Logger 定義(日志記錄器)

1. 根日志記錄器:root

<root level="${logLevelRoot}">
    <appender-ref ref="console"/>
    <appender-ref ref="INFO"/>
</root>
  • 所有未特別指定的日志都走這個(gè)配置,除非顯式地為某個(gè) logger(如 trade)單獨(dú)配置了 additivity=false,否則它們的日志也會(huì)傳遞到 root logger,并寫入主日志文件。
  • 默認(rèn)級(jí)別為 INFO,輸出到控制臺(tái)和主日志文件。

2. 自定義日志記錄器:trade

<logger name="trade" level="${logLevelTrade}" additivity="false">
    <appender-ref ref="TRADE_INFO"/>
</logger>
  • 名為 trade 的 logger,日志只輸出到 TRADE_INFO appender。
  • 不再繼承 root 的 appender(additivity=false),避免重復(fù)輸出。

五、典型日志使用方式(Java 示例)

private static final Logger tradeLogger = LoggerFactory.getLogger("trade");
private static final Logger signLogger = LoggerFactory.getLogger("signLog");
tradeLogger.info("這是一個(gè)交易日志");
signLogger.warn("這是一個(gè)簽約警告");
  • 日志隔離:通過(guò) additivity=false 實(shí)現(xiàn)不同業(yè)務(wù)模塊日志分離,防止日志重復(fù)輸出。
  • 動(dòng)態(tài)配置:使用 springProperty 可通過(guò)外部配置(如 bootstrap.yml)靈活調(diào)整日志路徑和級(jí)別。
  • 日志歸檔策略:使用 SizeAndTimeBasedRollingPolicy 實(shí)現(xiàn)按天 + 按大小切分日志文件,便于維護(hù)。

六:注意項(xiàng)

七:完整示例代碼

<configuration scan="true" scanPeriod="60 seconds" debug="false">
	<!-- 通過(guò)spring上下文獲取對(duì)應(yīng)的配置信息 -->
	<springProperty scope="context" name="logPath" source="logging.path" defaultValue="../logs"/>
	<!-- 獲取當(dāng)前啟動(dòng)應(yīng)用的日志級(jí)別(取自bootstrap.yml/bootstrap.properties文件) -->
	<springProperty scope="context" name="logLevelRoot" source="logging.level.root" defaultValue="INFO"/>
	<!-- 獲取當(dāng)前應(yīng)用的監(jiān)控日志級(jí)別(取自bootstrap.yml/bootstrap.properties文件) -->
	<springProperty scope="context" name="logLevelTrade" source="logging.level.trade" defaultValue="INFO"/>
	<springProperty scope="context" name="logLevelSign" source="logging.level.sign" defaultValue="INFO"/>
	<!-- 定義日志文件常量 -->
	<property name="moduleid" value="8176"/>
	<property name="modulename" value="IALLO_GATEWAY"/>
	<!-- ConsoleAppender 控制臺(tái)輸出日志 -->
	<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
		<encoder>
			<pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}][%X{bizSeqNo}][%level][%thread] - [${moduleid}][${modulename}]%m%n</pattern>
		</encoder>
	</appender>
	<!-- INFO級(jí)別日志 appender -->
	<appender name="INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<file>${logPath}/${moduleid}_${modulename}.log</file>
		<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
			<fileNamePattern>${logPath}/${moduleid}_${modulename}.log.%d{yyyy-MM-dd}-%i</fileNamePattern>
			<maxFileSize>500MB</maxFileSize>
			<MaxHistory>30</MaxHistory>
		</rollingPolicy>
		<encoder>
			<pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}][%X{bizSeqNo}][%thread][%level][${modulename}]%m%n</pattern>
		</encoder>
	</appender>
	<!-- INFO級(jí)別日志 appender -->
	<appender name="TRADE_INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<file>${logPath}/${moduleid}_${modulename}_tradeinfo.log</file>
		<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
			<fileNamePattern>${logPath}/${moduleid}_${modulename}_tradeinfo.log.%d{yyyy-MM-dd}-%i</fileNamePattern>
			<maxFileSize>500MB</maxFileSize>
			<MaxHistory>30</MaxHistory>
		</rollingPolicy>
		<encoder>
			<pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}][%level][%thread][${moduleid}][${modulename}]%m%n</pattern>
		</encoder>
	</appender>
	<!-- INFO級(jí)別日志 appender -->
	<appender name="SIGN_INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<file>${logPath}/${moduleid}_${modulename}_signinfo.log</file>
		<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
			<fileNamePattern>${logPath}/${moduleid}_${modulename}_signinfo.log.%d{yyyy-MM-dd}-%i</fileNamePattern>
			<maxFileSize>500MB</maxFileSize>
			<MaxHistory>30</MaxHistory>
		</rollingPolicy>
		<encoder>
			<pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}][%level][%thread][${moduleid}][${modulename}]%m%n</pattern>
		</encoder>
	</appender>
	<!-- root級(jí)別 INFO -->
	<root level="${logLevelRoot}">
		<appender-ref ref="console"/>
		<appender-ref ref="INFO"/>
	</root>
	<!-- 日志監(jiān)控 -->
	<logger name="trade" level="${logLevelTrade}" additivity="false">
		<appender-ref ref="TRADE_INFO"/>
	</logger>
	<logger name="signLog" level="${logLevelSign}" additivity="false">
		<appender-ref ref="SIGN_INFO"/>
	</logger>
</configuration>

到此這篇關(guān)于logback-spring.xml配置解析(最新整理)的文章就介紹到這了,更多相關(guān)logback-spring.xml配置內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 解決springboot的aop切面不起作用問(wèn)題(失效的排查)

    解決springboot的aop切面不起作用問(wèn)題(失效的排查)

    這篇文章主要介紹了解決springboot的aop切面不起作用問(wèn)題(失效的排查),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。 一起跟隨小編過(guò)來(lái)看看吧
    2020-04-04
  • idea使用pagehelper實(shí)現(xiàn)后端分頁(yè)功能的步驟詳解

    idea使用pagehelper實(shí)現(xiàn)后端分頁(yè)功能的步驟詳解

    這篇文章主要介紹了idea使用pagehelper實(shí)現(xiàn)后端分頁(yè)功能的步驟,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-09-09
  • SpringBoot對(duì)接小程序微信支付的實(shí)現(xiàn)

    SpringBoot對(duì)接小程序微信支付的實(shí)現(xiàn)

    本文主要介紹了SpringBoot對(duì)接小程序微信支付的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧<BR>
    2023-09-09
  • Spring Cloud 整合Apache-SkyWalking實(shí)現(xiàn)鏈路跟蹤的方法

    Spring Cloud 整合Apache-SkyWalking實(shí)現(xiàn)鏈路跟蹤的方法

    這篇文章主要介紹了Spring Cloud 整合Apache-SkyWalking鏈路跟蹤的示例代碼,代碼簡(jiǎn)單易懂,通過(guò)圖文相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-06-06
  • Spring MVC的參數(shù)綁定和返回值問(wèn)題

    Spring MVC的參數(shù)綁定和返回值問(wèn)題

    這篇文章主要介紹了Spring MVC的參數(shù)綁定和返回值問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02
  • Spring bean生命周期配置過(guò)程解析

    Spring bean生命周期配置過(guò)程解析

    這篇文章主要介紹了Spring bean生命周期配置過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • spring @Scheduled定時(shí)任務(wù)注解使用方法及注意事項(xiàng)小結(jié)

    spring @Scheduled定時(shí)任務(wù)注解使用方法及注意事項(xiàng)小結(jié)

    Spring的@Scheduled注解用于定時(shí)任務(wù)調(diào)度,默認(rèn)單線程依次執(zhí)行,可以通過(guò)配置多線程調(diào)度器或使用@Async注解實(shí)現(xiàn)并行執(zhí)行,常見(jiàn)參數(shù)包括cron、fixedRate、fixedDelay、initialDelay等,本文介紹spring @Scheduled定時(shí)任務(wù)注解使用方法,感興趣的朋友一起看看吧
    2025-02-02
  • 在Java中實(shí)現(xiàn)線程安全的單例模式的常見(jiàn)方式

    在Java中實(shí)現(xiàn)線程安全的單例模式的常見(jiàn)方式

    單例模式是一種常用的軟件設(shè)計(jì)模式,它確保一個(gè)類只有一個(gè)實(shí)例,并提供一個(gè)全局訪問(wèn)點(diǎn),在多線程環(huán)境下,確保單例模式的線程安全性是非常重要的,因?yàn)槎鄠€(gè)線程可能會(huì)同時(shí)嘗試創(chuàng)建實(shí)例,導(dǎo)致實(shí)例不唯一的問(wèn)題,本文介紹了在Java中實(shí)現(xiàn)線程安全的單例模式有幾種常見(jiàn)的方式
    2024-09-09
  • 聊聊SpringBoot的@Scheduled的并發(fā)問(wèn)題

    聊聊SpringBoot的@Scheduled的并發(fā)問(wèn)題

    這篇文章主要介紹了聊聊SpringBoot的@Scheduled的并發(fā)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • druid配置數(shù)據(jù)庫(kù)連接使用密文密碼方式

    druid配置數(shù)據(jù)庫(kù)連接使用密文密碼方式

    這篇文章主要介紹了druid配置數(shù)據(jù)庫(kù)連接使用密文密碼方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,
    2023-12-12

最新評(píng)論