ViseLog
Android 輕量級日志框架,使用森林對象維護不同的日志樹進行日志輸出,可以是Logcat樹、文件樹等,支持Bundle、Intent、Reference、Throwable、Map、Collection、JSON、Xml等格式化的輸出。
- 項目引用:
compile 'com.vise.xiaoyaoyou:viselog:1.1.2'
功能介紹
1、在Logcat中完美的格式化輸出,能很好的過濾手機和其他App的日志信息;
2、包含線程、類、方法信息,可以清楚地看到日志記錄的調用堆棧;
3、支持跳轉到源碼處;
4、支持格式化輸出JSON、XML格式信息;
5、支持List、Set、Map和數組的格式化輸出;
6、支持系統對象如Bundle、Intent、Reference和Throwable的格式化輸出;
7、支持自定義對象的格式化輸出;
8、支持字符串格式化后輸出;
9、支持自定義對象解析器;
10、支持自定義日志輸出樹,如輸出到文件的樹等。
項目結構
使用介紹
使用前需要進行日志的配置初始化及日志樹的添加,默認實現了打印到Logcat的日志樹,但需要在應用啟動時進行添加,這樣才能將日志信息打印到Logcat中。一般需要在自定義Application的OnCreate方法中進行如下配置:
ViseLog.getLogConfig()
.configAllowLog(true)//是否輸出日志
.configShowBorders(true)//是否排版顯示
.configTagPrefix("ViseLog")//設置標簽前綴
.configFormatTag("%d{HH:mm:ss:SSS} %t %c{-5}")//個性化設置標簽,默認顯示包名
.configLevel(Log.VERBOSE);//設置日志最小輸出級別,默認Log.VERBOSE
ViseLog.plant(new LogcatTree());//添加打印日志信息到Logcat的樹
1、打印基本信息
ViseLog.d("test message");
2、打印基本對象
ViseLog.d(new Boolean(true));
3、打印Bundle對象
ViseLog.d(new Bundle());
4、打印Intent對象
ViseLog.d(new Intent());
5、打印Reference對象
ViseLog.d(new SoftReference(0));
6、打印Throwable對象
ViseLog.e(new NullPointerException("this object is null!"));
7、打印List集合
List<String> list = new ArrayList<>();
for (int i = 0; i < 5; i++) {
list.add("test" + i);
}
ViseLog.d(list);
8、打印Map集合
Map<String, String> map = new HashMap<>();
for (int i = 0; i < 5; i++) {
map.put("xyy" + i, "test" + i);
}
ViseLog.d(map);
9、打印JSON字符串
String json = "{'xyy1':[{'test1':'test1'},{'test2':'test2'}],'xyy2':{'test3':'test3','test4':'test4'}}";
ViseLog.json(json);
10、打印XML字符串
String xml = "<xyy><test1><test2>key</test2></test1><test3>name</test3><test4>value</test4></xyy>";
ViseLog.xml(xml);
核心功能講解
1、森林結構
其核心思想是將日志系統看成一個森林對象統一進行維護,森林可以添加樹和移除樹,只有添加了指定的功能樹才會有日志輸出。日志功能由ITree接口進行定義,統一由主干樹SoulsTree來分配,並將日志輸出功能提供給上層實現,默認已經實現了日志打印到Logcat的樹DefaultTree。
2、自定義解析器
實現Parser接口,並實現parseClassType()和parseString()方法,再通過addParserClass()配置到ViseLog就行,詳細可參考文檔自定義對象打印器;
3、個性標簽設置詳解
變量 | 簡寫 | 描述 | 參數 | 示例 | 輸出結果 |
---|---|---|---|---|---|
%% | 無 | 轉義% | 無 | %%d | %d |
%date | %d | 當前時間 | 格式化時間,如HH:mm:ss | %d{HH:mm:ss:SSS} | 22:12:12:112 |
%thread | %t | 當前線程名稱 | 無 | %t | thread-112 |
%caller | %c | 線程信息和類路徑 | 一般用%c{-5}就好了,用法為%c{整數}或者%caller{整數},整數為包名路徑,如路徑為com.vise.logapp.MainActivity.onCreate(MainActivity.java:108),%c{1}輸出com,以.分割的第一個,如果小於0就是排除前面n個,如%c{-1},vise.logapp.MainActivity.onCreate(MainActivity.java:135) | %c{-3} | MainActivity.onCreate(MainActivity.java:108) |
4、日志配置詳解
方法 | 描述 | 取值 | 缺省 |
---|---|---|---|
configAllowLog | 是否允許日志輸出 | boolean | true |
configTagPrefix | 日志log的前綴 | String | "ViseLog" |
configShowBorders | 是否顯示邊界 | boolean | false |
configLevel | 日志顯示最小等級 | Log | Log.VERBOSE |
addParserClass | 自定義對象打印 | Parser | 無 |
configFormatTag | 個性化設置Tag | String | %c{-5} |
Android輕量級日志管理框架
注:本文著作權歸作者,由demo大師代發,拒絕轉載,轉載需要作者授權