微信Mars——xlog使用全解析

微信Mars——xlog使用全解析

不少人問我微信的Mars到底有什麼用,今天就告訴你其中一個最簡單的!javascript

如約而至,微信在12月19日開源了底層的通訊庫——Mars,其中有一個部分,是一個高性能的日誌模塊——xlog。java

xlog的詳細介紹,你們能夠參考微信技術公衆號的這篇文章——微信終端跨平臺組件 mars 系列(一) - 高性能日誌模塊xlog。python

本篇文章將帶領你們將xlog模塊抽取出來,做爲一個單獨的模塊來使用。android

編譯so庫

首先,咱們clone下Mars的源碼,而後進入其中的libraries目錄,直接執行下面的Python腳本:git

python build_android.py複製代碼

注意,這裏須要配置好本地的NDK編譯環境,這裏不贅述github

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

咱們須要編譯兩個庫:3和4。
編譯好以後,就會生成下面的文件:shell

咱們須要的就是裏面的Java文件和so庫,將mars_android_sdk/src目錄下的Java文件以及 libs/複製到你的項目中:緩存

如圖所示,工程的配置就完成了。微信

使用

權限

xlog能夠加密每一行輸出的文件並寫入文件,因此須要下面的權限:app

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>複製代碼

加載so

xlog須要使用到咱們前面編譯出的兩個so庫:

System.loadLibrary("stlport_shared");
System.loadLibrary("marsxlog");複製代碼

初始化

在代碼中對xlog進行初始化:

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的銷燬方法中,進行xlog的關閉操做,從而生成日誌文件:

Log.appenderClose();複製代碼

解析Log

Log生成完畢後,會在指定的路徑下生成相應的日誌文件:

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是緩存文件,不用關心,咱們須要的是.xlog文件,咱們把這個文件pull出來,使用Mars提供的Python腳本進行解密。

找到Mars源碼log/crypt/decode_mars_log_file.py下的這個文件,執行:

➜  mars_xlog_sdk python decode_mars_log_file.py ~/Downloads/log/MarsSample_20161230.xlog複製代碼

便可生成對應的log文件,用Sublime便可打開:

相關內容

大部分的內容實際上都在Mars源碼的wiki中,可是內容比較散,因此我這裏作了一個比較通用的Guide。

github.com/Tencent/mar…

github.com/Tencent/mar…

優點在哪

不少人可能會說,這玩意兒跟原生Log系統,還有log4j這類的日誌系統,強大在哪呢?實際上,xlog的優點主要有如下幾點:

  • 效率、效率、效率:這是最重要的,經過C層去寫日誌

  • 低內存、低CPU:性能優點大,不佔內存CPU

  • 功能豐富:與原生Log使用幾乎一致,但增長了寫入文件功能,同時自帶加密

相關文章
相關標籤/搜索