最近爲實現日誌的分類,壓縮,將log4j升級爲log4j2。雖然有很多文章對其中配置講的很詳細,但實踐中仍有不少細節值得補充,雖然看着比較零散,但希望對再次遇到這些問題的有所幫助。
路徑配置:
改相對路徑爲絕對路徑,解決日誌產生點不固定的問題。
<property name="log_home">${sys:PROJECT_HOME}</property>
<Property name="log_path">log</Property>
絕對路徑/${log_home}/${log_path}/info
相對路徑${log_path}/info
問題1:高可用是否能讓日誌在指定位置產生。
問題2:從相對路徑到絕對路徑的調整原因,猜測1:/,猜測2:sys路徑
jar包衝突
在調整log4j到log4j2的過程中,產生了一些jar包衝突
問題1:組件內置日誌包和log4j2存在衝突:解決方案,發現後排除。(待驗證)
問題2:誤引入log4j的包,解決方案,注意代碼相關問題
正確日誌jar包:
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
錯誤日誌jar包:
import org.apache. log4j.LogManager;
import org.apache. log4j.Logger;
nohup.out顯示問題:
修改&爲 >/dev/null 2>&1 &,但發現錯誤日誌無法正常顯示(推測爲jar包衝突問題),暫時改爲 >/dev/null &
日誌壓縮問題:
日誌有兩種壓縮方式
定大小壓縮:<SizeBasedTriggeringPolicy size="20MB"/>
定期壓縮:<TimeBasedTriggeringPolicy modulate="true" interval="1"/>
注:定期壓縮根據設置的壓縮格式來壓縮,注意壓縮包末尾的時間單位
壓縮格式:filePattern="/${log_home}/${log_path}/info/info - %d{yyyy-MM-dd}.log.gz"
或者兩者皆有
gc日誌問題:
有時候程序運行中會產生gc日誌,
日誌內容包括正常運行的記錄,格式如下:
2019-07-11T11:14:46.462+0800: 85483.378: [GC (Allocation Failure) [PSYoungGen: 653311K->15167K(657408K)] 909738K->271594K(2022912K), 0.0302089 secs] [Times: user=0.15 sys=0.00, real=0.03 secs]
錯誤日誌:oom的記錄。
問題gc日誌產生方式,壓縮方式,自動刪除方式暫不清楚
滾動刪除
網上其實有很多滾動刪除的示例,但在實際操作中遇到了滾動刪除失敗的問題,推測可能爲權限問題,如果該問題解決,我會再講下其中問題。