logback-spring.xml配置文件

集成到springboot的yml格式配置文件的示例:

logging:
  config: classpath:logback-spring.xml
  level:
    dao: debug
    org:
      mybatis: debug

logback-spring.xml

<?xml version="1.0" encoding="utf-8"?>
<configuration>
	<property name="LOG_INFO_HOME" value="/data/www/admin/log/shopping" />
	<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
	<conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
	<conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
	<!-- 彩色日誌格式 -->
	<property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>

	<appender name="CONSOLE-LOG" class="ch.qos.logback.core.ConsoleAppender">
		<layout class="ch.qos.logback.classic.PatternLayout">
			<pattern>${CONSOLE_LOG_PATTERN}</pattern>
		</layout>
	</appender>
	<appender name="INFO-LOG"
		class="ch.qos.logback.core.rolling.RollingFileAppender">
		<!-- 打印info日誌 -->
		<filter class="ch.qos.logback.classic.filter.LevelFilter">
			<level>ERROR</level>
			<onMatch>DENY</onMatch><!-- 匹配到ERROR就拒絕 -->
			<onMismatch>ACCEPT</onMismatch><!-- 沒有匹配到ERROR就接受 -->
		</filter>
		<encoder>
			<pattern>[%d{yyyy-MM-dd' 'HH:mm:ss.sss}] [%C] [%t] [%L] [%-5p] %m%n</pattern>
		</encoder>
		<!--滾動策略 -->
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<!--路徑 -->
			<fileNamePattern>${LOG_INFO_HOME}/info/info.%d.log</fileNamePattern>
			<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
				<maxFileSize>100MB</maxFileSize>
			</timeBasedFileNamingAndTriggeringPolicy>
			<!--日誌文檔保留天數-->
			<maxHistory>15</maxHistory>
		</rollingPolicy>
	</appender>
	<appender name="ERROR-LOG"
		class="ch.qos.logback.core.rolling.RollingFileAppender">
		<!-- 打印error日誌 -->
		<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
			<level>ERROR</level>
		</filter>
		<encoder>
			<pattern>[%d{yyyy-MM-dd' 'HH:mm:ss.sss}] [%C] [%t] [%L] [%-5p] %m%n</pattern>
		</encoder>
		<!--滾動策略 -->
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<!--路徑 -->
			<fileNamePattern>${LOG_INFO_HOME}/error/error.%d.log</fileNamePattern>
		</rollingPolicy>
		<!-- 此日誌文檔只記錄debug級別的 -->
		<filter class="ch.qos.logback.classic.filter.LevelFilter">
			<level>ERROR</level>
			<onMatch>ACCEPT</onMatch>
			<onMismatch>DENY</onMismatch>
		</filter>
	</appender>
	
	<!-- 設置info級別打印格式 -->
	<root level="info">
		<appender-ref ref="CONSOLE-LOG" />
		<appender-ref ref="INFO-LOG" />
		<appender-ref ref="ERROR-LOG" />
	</root>
	<!-- 設置包打印日誌級別 -->
	<logger name="com.ycdz.mapper" level="debug" additivity="false">
	 	<appender-ref ref="CONSOLE-LOG" />
	</logger>
</configuration> 


標籤層級關係說明
<property>設置變量,可以在下面的配置中引用變量名稱${變量名}
<root>標籤,必填標籤,用來指定最基礎的日誌輸出級別

  • <appender-ref>標籤,添加append

<append>標籤,通過使用該標籤指定日誌的收集策略

  • name屬性指定appender命名,命名從root標籤的appender-ref而來

  • class屬性指定輸出策略,通常有兩種,控制檯輸出和文件輸出,文件輸出就是將日誌進行一個持久化。ConsoleAppender將日誌輸出到控制檯

  • <filter>標籤,通過使用該標籤指定過濾策略

    • <level>標籤指定過濾的類型
  • <encoder>標籤,使用該標籤下的標籤指定日誌輸出格式

    • <rollingPolicy>標籤指定收集策略,比如基於時間進行收集
    • <fileNamePattern>標籤指定生成日誌保存地址,通過這樣配置已經實現了分類分天手機日誌的目標了
  • logger屬性:

    • name:用來指定受此logger約束的某一個包或者具體的某一個類
    • level:用來設置打印級別,大小寫無關(最常用的幾種):DEBUG, INFO, WARN, ERROR

級別分爲:TRACE < DEBUG < INFO < WARN < ERROR < FATAL

只能展示大於或等於設置的日誌級別的日誌;也就是說springboot默認級別爲INFO,那麼在控制檯展示的日誌級別只有INFO 、WARN、ERROR、FATAL

logback的additivity=“false” 與root關係

它是 子Logger 是否繼承 root的Logger 的 輸出源(appender) 的標誌位。
在這裏插入圖片描述
具體說,默認情況下子Logger會繼承root的Logger的appender,也就是說子Logger會在root的Logger的appender裏輸出。

參考

異步日誌輸出
https://blog.csdn.net/Dome_/article/details/99713648

發佈了158 篇原創文章 · 獲贊 72 · 訪問量 33萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章