美團開源日誌框架Logan初探
阿新 • • 發佈:2018-11-10
最近群裡的美團童靴發了個連結,說自家的日誌框架Logan開源了,地址為Logan,中文介紹地址為Logan。閒的無聊就體驗了一把,如果你想了解一下,不妨花點時間閱讀一下本文。
首先非常感謝美團童靴大公無私的精神,將自己的心血開源。自己也學習了一波,這個框架使用起來非常簡單,方法非常少,大致的使用步驟分為以下幾步:
- 初始化
LoganConfig
你可以在application中初始化,也可以在Activity中初始化,只要你用之前初始化就可以了,config使用了builder模式,非常容易理解:
gradle.build:
implementation 'com.dianping.android.sdk:logan:1.0.0'
初始化配置:
LoganConfig config = new LoganConfig.Builder(). setCachePath(getFilesDir().getAbsolutePath()) .setPath(getExternalFilesDir(null).getAbsolutePath() + File.separator + "logan_v1") .setEncryptKey16("0123456789012345".getBytes()) //加密模式 .setEncryptIV16("0123456789012345".getBytes()) //加密模式 .build(); Logan.init(config);
因為美團非常注重隱私模式,所有會存在16位ase加密Key
和16位aes加密IV
,這裡不做重點,只需要記得加密的key就行。
- 新增日誌
//設定debug模式
Logan.setDebug(true);
//開始寫日誌
Logan.w("this is the log ",1);
//立即寫入日誌
Logan.f();
-
日誌上傳&日誌解密
剛開始接觸這個日誌框架時,感覺比較懵逼,沒有提供本地檢視的機制,只能上傳並解密之後才能檢視。
上傳時需要繼承com.dianping.logan.SendLogRunnable.SendLogRunnable
sendLog
方法,方法中的引數是需要上傳的檔案,當然你上傳到哪裡去是你的事,不過檔案上傳之後,並不能直接使用,還需要專門的解密工具,美團也提供了node.js
伺服器,傳入檔案,得到解密之後的檔案,才可以去分析相關的日誌邏輯。為此,美團專門寫了如何解析解密後的日誌檔案,為此就不多了。自己可以看一下。 -
檢視自己的日誌檔案
我的介面如下:
程式碼也是相當的簡單:
public void inputLog1(View view) {
Logan.w("log one",1);
Logan.w("log one",1);
Logan.w("log one",1);
Logan.w("log one",1);
}
public void inputLog3(View view) {
Logan.w("log two", 2);
Logan.w("log two", 2);
Logan.w("log two", 2);
Logan.w("log two", 2);
Logan.w("log two", 2);
}
public void inputLog2(View view) {
Logan.w("log three",3);
Logan.w("log three",3);
Logan.w("log three",3);
Logan.w("log three",3);
Logan.w("log three",3);
}
一頓亂點之後,上傳至自己的伺服器,然後解密之後,得到的類似如下的資料:
本著簡介的態度,Logan框架將每一條日誌只用了5個欄位記錄,分別是:
欄位 | 含義 | 舉例 |
---|---|---|
c | log-content 日誌的內容 | long one |
f | flag-key 日誌的標記 | 1 |
l | local-time 日誌的當地時間 | 1539611498547 |
n | threadname_key 寫當前日誌的執行緒名 | main/thread-24 |
i | threadid_key 寫當前日誌的執行緒id | 1 |
m | ismain_key 是否在主執行緒中執行 | true/false |
這些定義都可以在construct_data.c原始碼中找到定義,一條簡單清晰的日誌就可以展示在你的面前了。
說了這麼多,那麼就說說自己的看法吧。
既然Logan號稱承受過千億量級的考驗,那麼就一定有它的長處,但是現在[18年10月17號]處於開源的1.0.0版本,有很多功能需要完善,日誌獲取也不是很完美,日誌的模式也比較單一,但是我們有理由相信經過大家的努力,Logan會越發優秀。
當然Logan真正距離線上環境還需要一段時間,畢竟後臺還沒有開源,那就讓我們敬請期待吧。