mars 是微信官方的终端基础组件,是一个使用 C++ 编写的业务性无关,平台性无关的基础组件。 目前已接入微信 Android、iOS、Mac、Windows、WP 等客户端。
xlog是mars系统中可以独立使用的日志模块。
xlog相比其它日志模块,有如下优点:
- 高性能高压缩率。
- 不丢失任何一行日志。
- 避免系统卡顿。
- 避免CPU波峰。
先下载mars-master.zip
github地址 https://github.com/Tencent/mars
进入其中的libraries目录,直接执行下面的Python脚本:
python build_android.py
运行时提示python版本必须为2.7xxx
运行时提示ndk版本要大于r11c
于是下载最新的android-ndk-r14b-windows-x86_64了运行
看见选择菜单了,选择3,编译xlog动态库
搜索mars github官方资料,有人遇到同样的问题,建议使用ndk11c Tencent/mars#307
使用ndk11c后,终于编译成功了!!!
mars_xlog_sdk\src目录下生成所需的java文件
mars_xlog_sdk\libs\armeabi-v7a目录生成所需的libmarsxlog.so和libstlport_shared.so库文件
将java文件和so分别拷贝至工程目录。
因为要往TF卡写文件,AndroidManifest.xml中加入写权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
初始化 xlog
private void initMarsXlog() {
// 加载so
System.loadLibrary("stlport_shared");
System.loadLibrary("marsxlog");
if (BuildConfig.DEBUG) {
//appenderOpen(int level, int mode, String cacheDir, String logDir, String nameprefix, String pubkey)
Xlog.appenderOpen(Xlog.LEVEL_DEBUG, Xlog.AppednerModeAsync, cachePath, logPath, "MarsXlogDemo", "");
Xlog.setConsoleLogOpen(true);
} else {
Xlog.appenderOpen(Xlog.LEVEL_INFO, Xlog.AppednerModeAsync, cachePath, logPath, "MarsXlogDemo", "");
Xlog.setConsoleLogOpen(false);
}
Log.setLogImp(new Xlog());
}
使用xlog,点击测试按钮,写log
@Override
public void onClick(View view) {
if (mButton.getId() == view.getId()) {
// 测试,写log
Log.d("test","write log !!!");
}
}
退出时调用停止
protected void onDestroy() {
super.onDestroy();
//停止Log记录
com.tencent.mars.xlog.Log.appenderClose();
}
log写入到/sdcard/mars/log/目录
导入log:
adb pull /sdcard/mars/log/MarsXlogDemo_20171109.xlog "E:\mars\log\crypt"
把log导出至Mars源码log/crypt/这个文件夹
执行脚本(decode_mars_nocrypt_log_file.py在log/crypt目录)
python decode_mars_nocrypt_log_file.py
当前目录下就会生成解密后的MarsXlogDemo_20171109.xlog.log
https://github.com/Tencent/mars
http://blog.csdn.net/eclipsexys/article/details/53965065