定位錯誤日誌排查Bug的基本思路大彙總(持續更新)

1.寫日誌的BugFree思路

一下三條tips是根據項目提煉了的經驗總結。主要提供一種BugFree的思路
1.寫日誌時要養成的好習慣

  • 保證在定位日誌時可以離開代碼情鏡還能看懂問題是什麼。
  • 在方法前加 @Transactional,拋出異常之後,事務會自動回滾,數據不會插入到數據庫。
  • 規範打印日誌的格式
    其中最重要的是接口和關鍵字,用於追蹤定位
log.warn(String.format("[接口名或操作名][Key Msg]:%s happens.because[param],[solve clue]",errorObj));

以上兩點的代碼舉例:

 @Transactional(value = "transactionManager", rollbackFor=Exception.class)
    public Boolean addLog(Request request) throws Exception {
        Boolean result = false;
        if(null!=request){
           Result<LogDO> LogDOResult =Manager.getLogById(request.getId());
           logger.info("add request num is"+ request.getId());
        }   //要指出正確或異常的數據ID,方便定位
        else{
            logger.error("查詢addLog接口信息失敗,[Id=" + Id + "]");
            throw new Exception("不存在數據,ID:"+request.getId());
        }
        return result;
    }

2.定位錯誤日誌時,主要用時間和內容關鍵字來定位錯誤信息,而requestId不具有描述性
在log的配置文件裏添加相關業務的log文件名,便於統一管理。
在這裏插入圖片描述
從上圖可知,當預約業務有問題則可以去xshell中找appointreg.log,具體方式如下圖:
在這裏插入圖片描述
整個背景流程大概是這樣:
在這裏插入圖片描述

2.錯誤排查工具Arthas

Arthas 是Alibaba開源的Java診斷工具。支持Linux/Mac/Windows,採用命令行交互模式。
它可以在線排查問題,無需重啓;動態跟蹤Java代碼;實時監控JVM狀態。
下面是資源和教程:
阿里巴巴Java診斷工具Arthas
Arthas中文教程
關於具體使用的源碼和步驟請見我的另一篇博客:
Java性能監控工具Arthas實踐

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章