腾讯 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

 

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