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