Java開發程式碼規範之異常日誌(二)——日誌規約
阿新 • • 發佈:2019-01-27
文章通過學習《阿里巴巴Java開發手冊》整理
1。應用中不可直接使用日誌系統(Log4j、Logback)中的API,而應依賴使用日誌框架SLF4J中的API,使用門面模式的日誌框架,有利於維護和各個類的日誌處理方式統一。
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
private static final Logger logger = LoggerFactory.getLogger(Abc.class);
2。日誌檔案推薦至少儲存15天,因為有些異常具備以“周”為頻次發生的特點。
3。應用中的擴充套件日誌(如打點、臨時監控、訪問日誌等)命名方式:
appName_logType_logName.log
logType : 日誌型別,推薦分類有
stats/desc/monitor/visit
等 logName: 日誌描述。
推薦對日誌進行分類,如將錯誤日誌和業務日誌分開存放,便於開發人員檢視,也便於通過日誌對系統進行及時監控。
4。對trace/debug/info
級別的日誌輸出,必須使用條件輸出形式或者使用佔位符的方式。
正例:(條件)
if (logger.isDebugEnabled()) {
logger.debug("Processing trade with id:" + id + " and symbol:" + symbol);
}
正例:(佔位符)
logger.debug ("Processing trade with id: {} and symbol : {}", id, symbol);
5。避免重複列印日誌,浪費磁碟空間,務必在log4j.xml中設定additivity=false
。
<logger name="com.taobao.dubbo.config" additivity="false">
6。異常資訊應該包括兩類資訊:案發現場資訊和異常堆疊資訊。如果不處理,那麼通過關鍵字throws往上丟擲。
7。謹慎記錄日誌。生產環境禁止輸出debug日誌;有選擇地輸出info日誌;如果使用warn來記錄剛上線時的業務行為資訊,一定要注意日誌輸出量的問題,避免把磁碟伺服器撐爆,並記得及時刪除這些觀察日誌。
記錄日誌時思考:這些日誌真的有人看嗎?看到這條日誌你能做什麼?能不能給問題排查帶來好處?
8。可以使用warn日誌級別來記錄使用者輸入引數錯誤的情況,避免使用者投訴時,無所適從。注意日誌輸出的級別,error級別只記錄系統邏輯出錯、異常等重要的錯誤資訊。如非必要,不要在此場景打出error級別。