日志是任何项目开发中的必须组件,它可以记录下来系统的行为,帮助开发者排错,优化系统性能调整系统行为等.既然日志可以帮助我们做很多分析,那么开发者肯定是有很多定制需求的,例如不同环境过滤不同等级的log,格式化输出,输出到文件,打包日志上传分析等等.这里就针对Android平台开发一套日志框架.后续将持续完善.
github地址:https://github.com/HiJesse/Android-NativeLogger
功能清单
状态
功能
默认
设置TAG
NLogger
设置LEVEL
WARN
是否捕获全局异常
false
是否开启文件日志
true
文件日志内容格式
SimpleFormatter
日志文件存放路径
/sdcard/native.logs/
日志文件过期时间
1 day
日志文件打包周期
1 day
适配Android 6.0
-
格式化输出JSON
-
格式化输出XML
-
日志混淆
-
: 已完成
: 待完成
如何引入
Gradle
repositories {
jcenter()
maven { url "https://raw.githubusercontent.com/HiJesse/mvn/master/repository/" }
}
dependencies {
compile "cn.jesse.android:nativelogger:1.0.0"
}
如何使用
简单用法-只使用基础的Console log
NLogger.d("debug");
NLogger.i("MainActivity", "type1");
NLogger.w("MainActivity", "%s", "type2");
NLogger.d("MainActivity", "%s%d%s", "type", 3, "finish");
NLogger.e("uncaughtException", throwable);
日志输出
相当于直接使用Android SDK中的Log
进阶用法
注意压缩日志文件的onZip回调为子进程
NLogger.getInstance()
.builder()
.tag("APP")
.loggerLevel(LoggerLevel.DEBUG)
.fileLogger(true)
.fileDirectory(getApplicationContext().getFilesDir().getPath() + "/logs")
.fileFormatter(new SimpleFormatter())
.expiredPeriod(3)
.catchException(true, new CrashWatcher.UncaughtExceptionListener() {
@Override
public void uncaughtException(Thread thread, Throwable ex) {
NLogger.e("uncaughtException", ex);
android.os.Process.killProcess(android.os.Process.myPid());
}
})
.build();
NLogger.d("debug");
NLogger.i("MainActivity", "type1");
NLogger.w("MainActivity", "%s", "type2");
NLogger.d("MainActivity", "%s%d%s", "type", 3, " finish");
NLogger.zipLogs(new IFileLogger.OnZipListener() {
@Override
public void onZip(boolean succeed, String target) {
if (succeed)
NLogger.i("zip", "succeed : " + target);
}
});
日志输出
配置功能清单中所有属性,并且使用到了压缩日志文件的方法
日志文件路径
解压2016-09-10.zip后得到日志文件