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