1. 程式人生 > >SpringBoot2.1-gradle-整合log4j2

SpringBoot2.1-gradle-整合log4j2

簡介

最近在研究springboot+gradle。需要新增日誌,現在springboot主流日誌就屬logback和log4j了。但是log4j後來拋棄了之前log4j的不足,以及吸取了優秀的logback的設計重新推出的一款新元件。log4j2的社群活躍很頻繁而且更新的也很快。所以這篇主要是講怎麼整合log4j2的帖子。

注意

值得注意的是,spring boot 1.3版本支援log4j,在spring boot 1.4的版本中,就需要使用log4j2,否則會出現如下錯誤:
Project build error: ‘dependencies.dependency.version’ for org.springframework.boot:spring-boot-starter-log4j:jar is missing.

一、修改build.gradle

由於springboot本身自帶的logback,會導致衝突。所以這塊需要排除預設日誌。

configurations {
	//remove default logger
	all*.exclude group: 'org.springframework.boot', module: 'spring-boot-starter-logging'
}

然後新增log4j依賴

	implementation('org.springframework.boot:spring-boot-starter-log4j2')

二、log4j2整合方式

log4j2主要有兩種方式去整合:

  1. 使用 .properties 進行整合。
  2. 使用 .xml 進行整合。
    我在剛開始整合時,使用的是.properties的方式。但是中間出現了一些問題。所以改用了xml方式。
    部落格連結: xml教程
    但是由於.properties方式的失敗。導致我特別想用第一種方式搞出來。

三、properties檔案

這個可以從log4j官網中找到,可以根據自己需求更改一些引數即可。

	# log4j2內部自身的日誌級別
	status = error
	# 配置日誌資訊輸出到哪裡:err表示作為標準錯誤輸出,還可以是一個檔案路徑或者一個URL
	dest = err
	# 配置名稱
	name =
PropertiesConfig # 自定義屬性名稱,以便在之後的配置中使用,如${filename} property.filename = target/rolling/rollingtest.log # 級別過濾(過濾日誌記錄) filter.threshold.type = ThresholdFilter # 只記錄debug級別以上的日誌,大小寫都可以 filter.threshold.level = debug # 控制檯型別的日誌輸出源 appender.console.type = Console # 名稱 :唯一 appender.console.name = STDOUT # 佈局型別 appender.console.layout.type = PatternLayout # 輸出模板格式 這是springboot appender.console.layout.pattern = %d{yyyy-MM-dd HH:mm:ss.SSS} -%5p ${PID:-} [%15.15t] %C{1.} [%t]: %m%n # 過濾級別 ThresholdFilter:低於級別的不輸出 appender.console.filter.threshold.type = ThresholdFilter # 記錄日誌的級別 appender.console.filter.threshold.level = error # 滾動檔案,會根據配置如檔案大小或者時間自動生成一個新檔案 appender.rolling.type = RollingFile appender.rolling.name = RollingFile # 日誌檔名稱 appender.rolling.fileName = ${filename} # 日誌回滾的檔案命名規則 appender.rolling.filePattern = target/rolling2/test1-%d{MM-dd-yyyy}-%i.log.gz appender.rolling.layout.type = PatternLayout # 輸出格式 appender.rolling.layout.pattern = %d %p %C{1.} [%t] %m%n # 滾動日誌的策略,即設定何時新建日誌檔案輸出日誌 appender.rolling.policies.type = Policies # 設定時間 appender.rolling.policies.time.type = TimeBasedTriggeringPolicy # 指定多久滾動一次 單位跟著filePattern配置精度最後一位 ,這裡就是2秒了 appender.rolling.policies.time.interval = 2 appender.rolling.policies.time.modulate = true # 日誌檔案的大小 appender.rolling.policies.size.type = SizeBasedTriggeringPolicy # 為了測試設定小一點 appender.rolling.policies.size.size=1kb ## 還有其他的觸發條件如:CronTriggeringPolicy 按Cron表示式進行的 具體使用可自行搜尋 # 指定同一個資料夾下最多有幾個日誌檔案時開始刪除最舊的,建立新的 appender.rolling.strategy.type = DefaultRolloverStrategy # 最多5個檔案,其實還是看filePattern的i的值,當大於5後,就會自動覆蓋了 appender.rolling.strategy.max = 5 rootLogger.level = info rootLogger.appenderRef.stdout.ref = STDOUT

記錄日誌的級別

這時候你會發現控制器裡沒有日誌那是因為下面這句導致。解決方案: error => debug

	# 記錄日誌的級別
	appender.console.filter.threshold.level = error