天天看點

Android平台日志收集系統

Android平台日志收集系統

      在産品開發測試中以及産品投放到終端客戶後,我們經常會遇到各種各樣的問題,産品出異常,比較嚴重的就是使用過程中當機,使用者無法操作。對于這種情況,将問題回報給研發,問題能夠快速重制的研發還比較好解決,有些問題不常見,研發短時間内也很難找到問題根源。為了提高研發的效率,那麼每次出異常的時候我們都最好有系統的列印系統,通過系統列印異常的蛛絲馬迹去查找問題的元兇。但是有時出問題的時候,系統都已經當機或者無法操作了,也就不能通過操作去抓系統列印了,是以引入日志收集系統就變得很有必要。日志收集系統每次系統啟動後背景自動運作,直至關機或系統崩潰,是以可以全程守護監控系統列印,對産品的快速穩定有着非常重要的意義。

        日志,在Android系統中我們需要抓取的主要有兩部分,一部分是驅動核心

列印出來的,一部分就是android部分列印出來的。

      驅動核心列印的資訊檢視方法:cat /proc/kmsg

      Android部分列印資訊檢視方法:logcat -v time

    日志系統運作邏輯

1、日志系統需要自動運作,無需人工幹預;

2、如果使用者通過系統持續抓取列印資訊功能,需視日志系統是否已經啟動,如果日志系統已經啟動,那麼可以提示使用者日志系統已經啟動;如果未啟動,那麼可以手動啟動系統持續抓取系統列印功能;

3、什麼時候自動啟動日志系統?

 從實際使用情況來說可以分一下幾種情況:

A、        如果使用者已經手動啟動了持續抓取系統列印資訊功能,此次開機無需再啟動日志系統;

B、        衛星未定位,在收到系統BOOT_COMPLETED消息後30秒,啟動日志收集系統。

4、日志系統空間大小限制;

     鑒于每次系統啟動後的正常列印,按照每次開機後運作的列印資訊在3MB左右,按照平均每天使用者開關機5次的使用頻率,那麼正常情況下一天就需要15MB空間,按照運作7天的收集限制,把存放日志系統檔案的目錄大小限制為100MB,在每次啟動日志系統前,判斷該目錄是否已經達到100M,如果已經達到,那麼可以啟動删除程式删除日期最早存入的日志檔案,一次删除達到30MB為宜,周而複始,循環操作,日志系統檔案存儲在系統内部,也就是/sdcard目錄下,目錄定在/sdcard/savelog。

      當savelog目錄檔案大小超過100MB的情況下,我們需要判斷一下裡面是否有異常檔案,在此暫且認為單次存入檔案大小超過20MB的列印資訊檔案為系統異常的主要參考;那麼怎麼處理呢?按以下步驟處理:

     第一步、壓縮該異常檔案,可以使用tar工具,壓縮後的包可以存放到/sdcard/tarlog目錄,該目錄最多存6份異常資訊,達到6份時,一次性删除前三次異常;

     第二步、異常資訊的壓縮包通過網絡傳回伺服器;這裡分兩種情況,一種在不帶4G子產品的機器,将通過使用者在打開車智享的時候,通過車智享的程式與機器日志系統通訊判斷是否有異常資訊需要上報,如果有,一次最多從異常資訊目錄傳遞3個壓縮包,然後車智享程式判斷使用者網絡環境為WIFI的情況下,跟伺服器通訊,把異常資訊壓縮包傳遞到伺服器。另外一種就是帶4G通訊子產品的,那麼就無需車智享中轉,直接從機器端上傳到伺服器。

     第三步、伺服器開發維護人員将收集到的異常資訊包拷貝出來給研發工程師分析。

5、人工參與提取系統日志系統列印:

     由于日志系統是存儲在系統内部存儲裡面,是以我們在使用的時候需要把需要的日志檔案拷貝到DVR卡,再回報到研發。

開發、測試人員:可以直接通過檔案管理器去到/sdcard/savelog目錄去拷貝需要的日志檔案到DVR卡或者U盤,這個比較便利,平時使用較多,相關人員稍作教育訓練即可。

但是對于終端客戶:可能不知道怎麼找對應的日志檔案,是以我們需要傻瓜式一點。初步方案雲服務程式裡增加【使用者體驗回報】按鈕,點選該按鈕後彈出讓使用者選擇異常出現的大概時間段,是一個相對模糊一點的,可供選擇的時間将是最1天、最近3天、最近5天,那麼系統将會把對應時段收集到的系統列印資訊打成壓縮包後通過雲服務上傳到伺服器,然後再把壓縮包送出給研發工程師分析,該壓縮包名稱:電子條碼+系統版本号組成,跟進電子條碼可以找到對應終端使用者,必要的時候可以電話溝通擷取更詳細的使用場景,系統版本号可以直覺的幫助我們定位軟體釋出的時段,對跟進解決問題都有很大的幫助。

       6、當檔案序列号達到9999時,全部删除儲存的log,重新從0000開始計數。假如一套開機十次,序列号運作到9999需要1000天。

     一套有效的背景log系統對研發的幫助還是蠻大的,在嵌入式産品中也要盡量支援這種功能,可以加快研發進度,提高研發品質。

繼續閱讀