微信Mars——xlog使用全解析

AdeBraine 7年前發布 | 22K 次閱讀 安卓開發 Android開發 移動開發

微信Mars——xlog使用全解析

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

xlog的詳細介紹,大家可以參考微信技術公眾號的這篇文章——微信終端跨平臺組件 mars 系列(一) - 高性能日志模塊xlog。

本篇文章將帶領大家將xlog模塊抽取出來,作為一個單獨的模塊來使用。

編譯so庫

首先,我們clone下Mars的源碼,然后進入其中的libraries目錄,直接執行下面的Python腳本:

python build_android.py

注意,這里需要配置好本地的NDK編譯環境,這里不贅述

Enter menu:

  1. build mars static libs.
  2. build mars shared libs.
  3. build xlog static libs.
  4. build xlog shared libs.
  5. exit.</code></pre>

    我們需要編譯兩個庫:3和4。

    編譯好之后,就會生成下面的文件:

    我們需要的就是里面的Java文件和so庫,將mars_android_sdk/src目錄下的Java文件以及 libs/復制到你的項目中:

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

    使用

    權限

    xlog可以加密每一行輸出的文件并寫入文件,所以需要下面的權限:

    <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());</code></pre>

使用

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

import com.tencent.mars.xlog.Log;

Log.d("xys", "xysxysxys");</code></pre>

停止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。

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

優勢在哪

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

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

  • 低內存、低CPU:性能優勢大,不占內存CPU

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

 

 

來自:http://blog.csdn.net/eclipsexys/article/details/53965065

 

 本文由用戶 AdeBraine 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!