日志是任何项目开发中的必须组件,它可以记录下来系统的行为,帮助开发者排错,优化系统性能调整系统行为等.既然日志可以帮助我们做很多分析,那么开发者肯定是有很多定制需求的,例如不同环境过滤不同等级的log,格式化输出,输出到文件,打包日志上传分析等等.这里就针对Android平台开发一套日志框架.后续将持续完善.
github地址:https://github.com/HiJesse/Android-NativeLogger
功能清单
状态 | 功能 | 默认 |
---|---|---|
OK | 设置TAG | NLogger |
OK | 设置LEVEL | WARN |
OK | 是否捕获全局异常 | false |
OK | 是否开启文件日志 | true |
OK | 文件日志内容格式 | SimpleFormatter |
OK | 日志文件存放路径 | /sdcard/native.logs/ |
OK | 日志文件过期时间 | 1 day |
OK | 日志文件打包周期 | 1 day |
NO | 适配Android 6.0 | - |
NO | 格式化输出JSON | - |
NO | 格式化输出XML | - |
NO | 日志混淆 | - |
如何引入
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后得到日志文件
转载请注明出处:http://blog.youkuaiyun.com/l2show/article/details/52504653