騰訊 mars 微信跨平臺跨業務基礎組件(二)Android 平臺 xlog 使用

xlog  好處就不多說了見:微信終端跨平臺組件 mars 系列(一) - 高性能日誌模塊xlog

我看了一下mars/sample android  竟然沒有申請動態寫權限,並且targetSdkVersion28,所以哪個demo 不能正常生成日誌;

注意如果只想使用 xlog 不想使用 mars 的其他組件可以選擇: 在 app 的 gradle 文件 app/build.gradle,添加 xlog 的庫依賴:

dependencies {
    compile 'com.tencent.mars:mars-xlog:1.2.3'
}

不管是 mars-core 還是 mars-wrapper 或者是進行的本地編譯,使用 xlog 的方式都是一樣的。
推薦在 程序啓動時加載 xlog:

System.loadLibrary("c++_shared");
System.loadLibrary("marsxlog");

在程序啓動加載 xlog 後緊接着初始化 xlog:

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

// this is necessary, or may cash for SIGBUS
final String cachePath = this.getFilesDir() + "/xlog"

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

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

Log.setLogImp(new Xlog());

在 程序退出時反初始化:

Log.appenderClose();

需要注意:

  • 如果你的程序使用了多進程,不要把多個進程的日誌輸出到同一個文件中,保證每個進程獨享一個日誌文件。
  • 保存 log 的目錄請使用單獨的目錄,不要存放任何其他文件防止被 xlog 自動清理功能誤刪。
  • debug 版本下建議把控制檯日誌打開,日誌級別設爲 Verbose 或者 Debug, release 版本建議把控制檯日誌關閉,日誌級別使用 Info.
  • cachePath這個參數必傳,而且要data下的私有文件目錄,例如 /data/data/packagename/files/xlog, mmap文件會放在這個目錄,如果傳空串,可能會發生 SIGBUS 的crash。

 

這裏生成的日誌是壓縮過的(如果未加密),解碼xlog文件;

1.將 日誌文件 pull 到本地;

2.將日誌放到 mars\log\crypt 目錄下

運行CMD,進入改文件夾下,執行 Python decode_mars_nocrypt_log_file.py 文件名.xlog  進行解碼,

可以看到,該文件夾下,生成了.xlog.log文件,用記事本即可打開查看日誌了。
 日誌如:

^^^^^^^^^^Oct 14 2019^^^20:27:59^^^^^^^^^^[26431,26431][2020-03-19 +0000 06:26:23]
get mmap time: 1
MARS_URL: 
MARS_PATH: master
MARS_REVISION: 85b19f92
MARS_BUILD_TIME: 2019-10-14 20:27:57
MARS_BUILD_JOB: 
log appender mode:0, use mmap:1
cache dir space info, capacity:11022630912 free:1691385856 available:1691385856
log dir space info, capacity:11022630912 free:1691385856 available:1691385856
[I][2020-03-19 +0.0 06:26:23.922][26431, 26431][z-test][, , 0][hello world!
[I][2020-03-19 +0.0 06:26:23.923][26431, 26431*][][native-lib.cpp, Java_com_tencent_mars_xlogsample_MainActivity_stringFromJNI, 15][-> Java_com_tencent_mars_xlogsample_MainActivity_stringFromJNI 
[D][2020-03-19 +0.0 06:26:23.923][26431, 26431*][][native-lib.cpp, Java_com_tencent_mars_xlogsample_MainActivity_stringFromJNI, 18][test xlog, have level filter. line:18, func:Java_com_tencent_mars_xlogsample_MainActivity_stringFromJNI
[D][2020-03-19 +0.0 06:26:23.923][26431, 26431*][][native-lib.cpp, Java_com_tencent_mars_xlogsample_MainActivity_stringFromJNI, 20][test xlog, have level filter. line:20, func:Java_com_tencent_mars_xlogsample_MainActivity_stringFromJNI
[F][2020-03-19 +0.0 06:26:23.923][26431, 26431*][mars::comm][native-lib.cpp, Java_com_tencent_mars_xlogsample_MainActivity_stringFromJNI, 22][[ASSERT(1<0)]assert false info
[F][2020-03-19 +0.0 06:26:23.923][26431, 26431*][mars::comm][native-lib.cpp, Java_com_tencent_mars_xlogsample_MainActivity_stringFromJNI, 24][[ASSERT(false)]
[D][2020-03-19 +0.0 06:26:23.923][26431, 26431*][testxlog][native-lib.cpp, Java_com_tencent_mars_xlogsample_MainActivity_stringFromJNI, 30][-------user define:30--------
[I][2020-03-19 +0.0 06:26:23.923][26431, 26431*][test][native-lib.cpp, Java_com_tencent_mars_xlogsample_MainActivity_stringFromJNI, 32][123
[I][2020-03-19 +0.0 06:26:23.923][26431, 26431*][test][native-lib.cpp, Java_com_tencent_mars_xlogsample_MainActivity_stringFromJNI, 34][123:4
[I][2020-03-19 +0.0 06:26:23.923][26431, 26431*][test][native-lib.cpp, Java_com_tencent_mars_xlogsample_MainActivity_stringFromJNI, 35][123
[F][2020-03-19 +0.0 06:26:23.923][26431, 26431*][mars::comm][native-lib.cpp, Java_com_tencent_mars_xlogsample_MainActivity_stringFromJNI, 39][[ASSERT(1<0)]3455
[F][2020-03-19 +0.0 06:26:23.923][26431, 26431*][mars::comm][native-lib.cpp, Java_com_tencent_mars_xlogsample_MainActivity_stringFromJNI, 41][[ASSERT(1<0)]3455dfdddddddddd
[I][2020-03-19 +0.0 06:26:23.923][26431, 26431*][test][native-lib.cpp, Java_com_tencent_mars_xlogsample_MainActivity_stringFromJNI, 44][111111111111
[I][2020-03-19 +0.0 06:26:23.923][26431, 26431*][][native-lib.cpp, Java_com_tencent_mars_xlogsample_MainActivity_stringFromJNI, 15][<- Java_com_tencent_mars_xlogsample_MainActivity_stringFromJNI +0, 

顯示比較 多,如果需要調整可以修改:

 mars\log\src\appender.cc文件中的appender_open方法, 拼接下面這部分信息

修改後,重新編譯。就OK

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章