編輯:關於Android編程
日志是任何項目開發中的必須組件,它可以記錄下來系統的行為,幫助開發者排錯,優化系統性能調整系統行為等.既然日志可以幫助我們做很多分析,那麼開發者肯定是有很多定制需求的,例如不同環境過濾不同等級的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後得到日志文件

android studio中斷開SVN連接,並徹底清理項目中的.svn文件
android studio中斷開SVN連接,並徹底清理項目中的.svn文件。如何斷開SVN的連接。在使用SVN過程中,我們會發現當我們第一次share到subversi
android6.0權限管理工具EasyPermissionUtil
前言android6.0開始,權限的申請發生了改變,申請變的動態化,也就是運行時權限,和iOS相仿,動態化的意思是指,在每次使用需要危險權限的方法的時候,需要檢查程序是否
Android UI開發第四十三篇——使用Property Animation實現墨跡天氣3.0引導界面及動畫實現
前面寫過《墨跡天氣3.0引導界面及動畫實現》,裡面完美實現了動畫效果,那一篇文章使用的View Animation,這一篇文章使用的Property Animation實
android中子線程更新UI的方式淺析
一、為何寫作此文??你是不是經常看到很多書籍中說:不能在子線程中操作ui,不然會報錯。你是不是也遇到了如下的疑惑(見下面的代碼):@Override prote