1. 程式人生 > >APP系統報錯日誌反饋機制設計

APP系統報錯日誌反饋機制設計

APP日誌調取與伺服器的互動設計

這裡寫圖片描述

APP日誌調取介面設計

介面約定

介面返回說明

引數 引數型別 說明
code Integer 含義類似http協議返回碼,200代表成功
message String 返回訊息,如果code為異常,則返回訊息是異常資訊
data Object 資料物件,json物件

失敗示例資料

{
    code:500,
    message:"系統繁忙,請稍後再試",
    data:{}
}

備註
一個使用者可以上傳多個日誌檔案,後臺需要考慮如何儲存一個使用者的多個日誌檔案。

獲取APP日誌配置介面

介面地址

介面方法

GET

引數說明

引數 引數型別 是否必須 說明
access_token String 訪問令牌

返回data資料說明

引數 引數型別 說明
id Long 配置的唯一標識
enableUpload Boolean true代表上傳,false代表不上傳
networkType Integer 網路型別,1代表wifi,2代表2G/3G/4G,3代表1與2的集合(即任何網路型別),當enableUpload為true時起效
networkTypeName String 網路型別名字,方便理解與除錯,見networkType與networkTypeName對應表
scope Integer 上傳範圍,當enableUpload為true時起效,1代表全部,2代表指定日期
startDate String 開始日期,當scope為2時起效,格式為yyyy-MM-dd,
endDate String 結束日期,,當scope為2時起效,格式為yyyy-MM-dd,不能在startDate之前,如果startDate與endDate值一樣,則指上傳那一天的日誌記錄

networkType與networkTypeName對應表

networkType networkTypeName
1 WIFI
2 2G/3G/4G
3 ALL

成功示例資料

{
    code:200,
    message:"獲取APP日誌配置成功",
    data:{
        id:1001,
        enableUpload:true,
        networkType:1,
        networkTypeName:"WIFI",
        scope:2,
        startDate:"2016-04-12",
        endDate:"2016-04-13"
    }
}

上傳日誌檔案介面

介面地址

介面方法

POST

引數說明

引數 引數型別 是否必須 說明
access_token String 訪問令牌
file Binary 日誌檔案二進位制流

返回data資料說明

引數 引數型別 說明
fileName String 檔名,返回這個名字,方便對介面進行除錯,方便技術人員從後臺查詢日誌

成功示例資料

{
    code:200,
    message:"上傳日誌檔案成功",
    data:{
        fileName:"2016-04-13.log"
    }
}

更新日誌配置介面

介面地址

介面方法

POST

引數說明

引數 引數型別 是否必須 說明
access_token String 訪問令牌
enableUpload Boolean 是否上傳

返回data資料說明
與獲取APP日誌配置介面返回的data資料結構一致。

成功示例資料

{
    code:200,
    message:"更新日誌配置成功",
    data:{
        id:1001,
        enableUpload:false,
        networkType:1,
        networkTypeName:"WIFI",
        scope:2,
        startDate:"2016-04-12",
        endDate:"2016-04-13"
    }
}

APP操作日誌記錄設計

這裡寫圖片描述

APP上傳日誌流程設計

這裡寫圖片描述

日誌位置

日誌存放的路徑:/SD卡根目錄/ydh/log/使用者名稱/日誌檔名稱.log

元資料 定義
SD卡根目錄 Android是SD卡根目錄,iOS是應用的根目錄
使用者名稱 使用者的賬戶名稱
日誌檔名稱 日期字串,格式為:yyyy-MM-dd。一個日誌檔案對應一個使用者使用手機應用一天的情況。上傳的時候需要在檔名前面新增平臺字首,如果是Android平臺,則新增字首”Android_”,如果是iOS平臺,則新增字首”iOS_”

示例

使用者test2016年4月12日的操作日誌檔案為:/mnt/ydh/log/test/2016-04-12.log

日誌內容格式

使用者操作日誌內容格式

元資料 定義
時間 格式為yyyy-MM-dd HH:mm:ss
模組 Commodity(商品)、Order(訂單)、User(使用者)、Authority(許可權)
事件 操作事件,有相關的定義
日誌型別 ERROR(錯誤)、INFO(資訊)
事件生命週期 如START(開始),END(結束)
錯誤資訊 如果型別為ERROR時,必須帶上錯誤資訊
訂單事件
事件 定義
立即下單 placeAnOrder
使用者事件
事件 定義
登入 login
示例

開始如:2016-04-12 15:46:32 Order placeAnOrder INFO START
結束成功如:2016-04-12 15:46:32 Order placeAnOrder INFO END
結束錯誤如:2016-04-12 15:46:32 Order placeAnOrder ERROR END {code:500,msg:”系統繁忙,請稍後再試”}

介面呼叫日誌內容格式

元資料 定義
時間 格式為yyyy-MM-dd HH:mm:ss
方法 POST、GET、PUT、DELETE
地址 完整的url,有引數則帶上引數
返回碼 如200,404
內容型別 HTTP頭欄位Content-Type,如application/x-www-form-urlencoded
輸入引數 當方法是POST時,以body形式傳輸的引數
返回內容 介面呼叫返回的以body形式傳輸的內容
示例

如:2016-04-12 15:46:32 POST https://api.dinghuo123.com/oauth2/token 200 application/x-www-form-urlencoded password=654321&scope=basic&client_secret=3sfX3HJX484gXY&userName=chase001&client_id=2124571&grant_type=client_credentials {“code”:525,”message”:”賬號所屬的服務已經過期”,”data”:”“}

一般一個操作對應多個介面呼叫,所以一個操作的完整的示例如:
2016-04-12 15:46:32 User login INFO START
2016-04-12 15:46:33 POST https://api.dinghuo123.com/oauth2/token 200 application/x-www-form-urlencoded password=654321&scope=basic&client_secret=3sfX3HJX484gXY&userName=chase001&client_id=2124571&grant_type=client_credentials {“code”:525,”message”:”賬號所屬的服務已經過期”,”data”:”“}
2016-04-12 15:46:37 User login ERROR END {“code”:525,”message”:”賬號所屬的服務已經過期”,”data”:”“}