微信Mars——xlog使用全解析

微信Mars——xlog使用全解析

很多人問(wèn)我微信的Mars到底有什么用斩萌,今天就告訴你其中一個(gè)最簡(jiǎn)單的缝裤!

如約而至,微信在12月19日開(kāi)源了底層的通信庫(kù)——Mars颊郎,其中有一個(gè)部分憋飞,是一個(gè)高性能的日志模塊——xlog。

xlog的詳細(xì)介紹姆吭,大家可以參考微信技術(shù)公眾號(hào)的這篇文章——微信終端跨平臺(tái)組件 mars 系列(一) - 高性能日志模塊xlog榛做。

本篇文章將帶領(lǐng)大家將xlog模塊抽取出來(lái),作為一個(gè)單獨(dú)的模塊來(lái)使用猾编。

編譯so庫(kù)

首先瘤睹,我們clone下Mars的源碼,然后進(jìn)入其中的libraries目錄答倡,直接執(zhí)行下面的Python腳本:

python build_android.py

注意轰传,這里需要配置好本地的NDK編譯環(huán)境,這里不贅述

Enter menu:
1. build mars static libs.
2. build mars shared libs.
3. build xlog static libs.
4. build xlog shared libs.
5. exit.

我們需要編譯兩個(gè)庫(kù):3和4瘪撇。
編譯好之后获茬,就會(huì)生成下面的文件:

我們需要的就是里面的Java文件和so庫(kù)港庄,將mars_android_sdk/src目錄下的Java文件以及 libs/復(fù)制到你的項(xiàng)目中:

如圖所示,工程的配置就完成了恕曲。

使用

權(quán)限

xlog可以加密每一行輸出的文件并寫入文件鹏氧,所以需要下面的權(quán)限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

加載so

xlog需要使用到我們前面編譯出的兩個(gè)so庫(kù):

System.loadLibrary("stlport_shared");
System.loadLibrary("marsxlog");

初始化

在代碼中對(duì)xlog進(jìn)行初始化:

final String SDCARD = Environment.getExternalStorageDirectory().getAbsolutePath();
final String logPath = SDCARD + "/marssample/log";

//init xlog
if (BuildConfig.DEBUG) {
    Xlog.appenderOpen(Xlog.LEVEL_DEBUG, Xlog.AppednerModeAsync, "", logPath, "MarsSample");
    Xlog.setConsoleLogOpen(true);

} else {
    Xlog.appenderOpen(Xlog.LEVEL_INFO, Xlog.AppednerModeAsync, "", logPath, "MarsSample");
    Xlog.setConsoleLogOpen(false);
}

Log.setLogImp(new Xlog());

使用

使用xlog下的Log類就可以打Log了,跟使用Android原生的Log方式基本一樣:

import com.tencent.mars.xlog.Log;

Log.d("xys", "xysxysxys");

停止Log記錄

在Application或者Activity的銷毀方法中佩谣,進(jìn)行xlog的關(guān)閉操作把还,從而生成日志文件:

Log.appenderClose();

解析Log

Log生成完畢后,會(huì)在指定的路徑下生成相應(yīng)的日志文件:

shell@R7:/sdcard/marssample/log $ ll
-rw-rw---- root     sdcard_r   153600 2016-12-30 17:06 MarsSample.mmap2
-rw-rw---- root     sdcard_r    29633 2016-12-30 17:06 MarsSample_20161230.xlog

其中MarsSample.mmap2是緩存文件茸俭,不用關(guān)心吊履,我們需要的是.xlog文件,我們把這個(gè)文件pull出來(lái)调鬓,使用Mars提供的Python腳本進(jìn)行解密艇炎。

找到Mars源碼log/crypt/decode_mars_log_file.py下的這個(gè)文件,執(zhí)行:

?  mars_xlog_sdk python decode_mars_log_file.py ~/Downloads/log/MarsSample_20161230.xlog

即可生成對(duì)應(yīng)的log文件腾窝,用Sublime即可打開(kāi):

相關(guān)內(nèi)容

大部分的內(nèi)容實(shí)際上都在Mars源碼的wiki中缀踪,但是內(nèi)容比較散,所以我這里做了一個(gè)比較通用的Guide虹脯。

https://github.com/Tencent/mars/wiki/Mars-%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98

https://github.com/Tencent/mars/wiki/Mars-Android-%E6%8E%A5%E5%85%A5%E6%8C%87%E5%8D%97

優(yōu)勢(shì)在哪

很多人可能會(huì)說(shuō)驴娃,這玩意兒跟原生Log系統(tǒng),還有l(wèi)og4j這類的日志系統(tǒng)循集,強(qiáng)大在哪呢托慨?實(shí)際上,xlog的優(yōu)勢(shì)主要有以下幾點(diǎn):

  • 效率暇榴、效率、效率:這是最重要的蕉世,通過(guò)C層去寫日志

  • 低內(nèi)存蔼紧、低CPU:性能優(yōu)勢(shì)大,不占內(nèi)存CPU

  • 功能豐富:與原生Log使用幾乎一致狠轻,但增加了寫入文件功能奸例,同時(shí)自帶加密

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市向楼,隨后出現(xiàn)的幾起案子查吊,更是在濱河造成了極大的恐慌,老刑警劉巖湖蜕,帶你破解...
    沈念sama閱讀 217,542評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件逻卖,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡昭抒,警方通過(guò)查閱死者的電腦和手機(jī)评也,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門炼杖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人盗迟,你說(shuō)我怎么就攤上這事坤邪。” “怎么了罚缕?”我有些...
    開(kāi)封第一講書人閱讀 163,912評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵艇纺,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我邮弹,道長(zhǎng)黔衡,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 58,449評(píng)論 1 293
  • 正文 為了忘掉前任肠鲫,我火速辦了婚禮员帮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘导饲。我一直安慰自己捞高,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布渣锦。 她就那樣靜靜地躺著硝岗,像睡著了一般。 火紅的嫁衣襯著肌膚如雪袋毙。 梳的紋絲不亂的頭發(fā)上型檀,一...
    開(kāi)封第一講書人閱讀 51,370評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音听盖,去河邊找鬼胀溺。 笑死,一個(gè)胖子當(dāng)著我的面吹牛皆看,可吹牛的內(nèi)容都是我干的仓坞。 我是一名探鬼主播,決...
    沈念sama閱讀 40,193評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼腰吟,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼无埃!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起毛雇,我...
    開(kāi)封第一講書人閱讀 39,074評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤嫉称,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后灵疮,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體织阅,經(jīng)...
    沈念sama閱讀 45,505評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評(píng)論 3 335
  • 正文 我和宋清朗相戀三年震捣,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蒲稳。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片氮趋。...
    茶點(diǎn)故事閱讀 39,841評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖江耀,靈堂內(nèi)的尸體忽然破棺而出剩胁,到底是詐尸還是另有隱情,我是刑警寧澤祥国,帶...
    沈念sama閱讀 35,569評(píng)論 5 345
  • 正文 年R本政府宣布昵观,位于F島的核電站,受9級(jí)特大地震影響舌稀,放射性物質(zhì)發(fā)生泄漏啊犬。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評(píng)論 3 328
  • 文/蒙蒙 一壁查、第九天 我趴在偏房一處隱蔽的房頂上張望觉至。 院中可真熱鬧,春花似錦睡腿、人聲如沸语御。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,783評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)应闯。三九已至,卻和暖如春挂捻,著一層夾襖步出監(jiān)牢的瞬間碉纺,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,918評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工刻撒, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留骨田,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,962評(píng)論 2 370
  • 正文 我出身青樓声怔,卻偏偏與公主長(zhǎng)得像盛撑,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子捧搞,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容