關於日誌與異常

在項目中的約定this

  • 生產環境禁止直接使用 System.out 或 System.err 輸出日誌或使用 e.printStackTrace() 打印異常堆棧. 因爲標準日誌輸出與標準錯誤輸出文件每次 Jboss 重啓時才滾動, 若是大量輸出送往這兩個文件, 容易形成文件大小超過操做系統大小限制.操作系統

  • 輸出的 POJO 類建議重寫 toString 方法,有利於在debugger過程當中,查看對象信息.debug

  • 能夠使用 warn 日誌級別來記錄用戶輸入參數錯誤的狀況, 避免用戶投訴時, 無所適從. 注意日誌輸出的級別,error 級別只記錄系統邏輯出錯、異常、或者重要的錯誤信息. 如非必要, 請不要在此場景打出 error 級別, 避免頻繁報警.日誌

  • 異常和日誌code

反例:拋出異常,則不須要記錄logger,交給相應的ExceptionHandler記錄日誌信息對象

try {
	service.start();
}catch(Exception e){
	logger.error("error Msg :{}", e.getMessage());
	throw new RuntimeException("error Msg", e.getMessage());
}

正例:拋出異常,記錄出錯信息的堆棧信息,exception要放在參數末尾get

try {
	service.start();
}catch(Exception e){
	logger.info("error Msg :{}",ex.getMessage(), e);
}


//參數列表中包含異常,異常會將堆棧信息打印出來
    private void initThrowable(final Object[] params, final int usedParams) {
        if (params != null) {
            final int argCount = params.length;
            if (usedParams < argCount
				&& this.throwable== null 
				&& params[argCount - 1] instanceof Throwable){
                this.throwable = (Throwable) params[argCount - 1];
            }
        }
    }
相關文章
相關標籤/搜索