日志系统ViseLog使用详解

前端之家收集整理的这篇文章主要介绍了日志系统ViseLog使用详解前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

前言

日志系统无论在服务端开发还是移动端开发,都是一个基础且重要的能力。开发人员在代码调试以及错误定位过程中,大多数都要依赖日志信息,一个简洁灵活的日志系统是相当重要的。Android系统提供了Log类用来记录日志,一般情况下我们几乎都是对这个Log类进行简单的封装,例如增加全局控制是否打印日志的开关、增加打印到文件的能力等,但是不能很直观的展示日志的信息。在网上参考了几个比较好的日志开源库后(如Logger、LogUtils、Timber等),结合其各自的优点就诞生了ViseLog日志系统,本文将对如何使用ViseLog系统以及其核心功能点做详细的解释。

项目引用:compile 'com.vise.xiaoyaoyou:viselog:1.0.0'@H_404_12@
项目地址:https://github.com/xiaoyaoyou1212/ViseLog

功能介绍

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方法中进行如下配置:

1
2
3
4
5
6
7
@H_502_62@
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 DefaultTree());//添加打印日志信息到Logcat的树
@H_502_62@

1、打印基本信息

1
@H_502_62@
ViseLog.d("test message");
@H_502_62@

这里写图片描述

2、打印基本对象

1
@H_502_62@
ViseLog.d(new Boolean(true));
@H_502_62@

这里写图片描述

3、打印Bundle对象

1
@H_502_62@
ViseLog.d(new Bundle());
@H_502_62@

这里写图片描述

4、打印Intent对象

1
@H_502_62@
ViseLog.d(new Intent());
@H_502_62@

这里写图片描述

5、打印Reference对象

1
@H_502_62@
ViseLog.d(new SoftReference(0));
@H_502_62@

这里写图片描述

6、打印Throwable对象

1
@H_502_62@
ViseLog.e(new NullPointerException("this object is null!"));
@H_502_62@

分享图片

大专栏  日志系统ViseLog使用详解ze/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="这里写图片描述"/>

7、打印List集合

1
2
3
4
5
@H_502_62@
List<String> list = new ArrayList<>();
for (int i = 0; i < 5; i++) {
list.add("test" + i);
}
ViseLog.d(list);
@H_502_62@

这里写图片描述

8、打印Map集合

1
2
3
4
5
@H_502_62@
Map<String,String> map = new HashMap<>();
for (int i = 0; i < 5; i++) {
map.put("xyy" + i,"test" + i);
}
ViseLog.d(map);
@H_502_62@

这里写图片描述

9、打印JSON字符串

1
2
@H_502_62@
String json = "{'xyy1':[{'test1':'test1'},{'test2':'test2'}],'xyy2':{'test3':'test3','test4':'test4'}}";
ViseLog.json(json);
@H_502_62@

这里写图片描述

10、打印XML字符串

1
2
@H_502_62@
String xml = "<xyy><test1><test2>key</test2></test1><test3>name</test3><test4>value</test4></xyy>";
ViseLog.xml(xml);
@H_502_62@

这里写图片描述

核心功能讲解

1、森林结构
其核心思想是将日志系统看成一个森林对象统一进行维护,森林可以添加树和移除树,只有添加了指定的功能树才会有日志输出。日志功能由ITree接口进行定义,统一由主干树SoulsTree来分配,并将日志输出功能提供给上层实现,默认已经实现了日志打印到Logcat的树DefaultTree。

2、自定义解析器
实现Parser接口,并实现parseClassType()和parseString()方法,再通过addParserClass()配置到ViseLog就行,详细可参考文档自定义对象打印器

3、个性标签设置详解

变量 简写 描述 参数 示例 输出结果
%%@H_502_62@ 无@H_502_62@ 转义%@H_502_62@ 无@H_502_62@ %%d@H_502_62@ %d@H_502_62@
%date@H_502_62@ %d@H_502_62@ 当前时间@H_502_62@ 格式化时间,如HH:mm:ss@H_502_62@ %d{HH:mm:ss:SSS}@H_502_62@ 22:12:12:112@H_502_62@
%thread@H_502_62@ %t@H_502_62@ 当前线程名称@H_502_62@ 无@H_502_62@ %t@H_502_62@ thread-112@H_502_62@
%caller@H_502_62@ %c@H_502_62@ 线程信息和类路径@H_502_62@ 一般用%c{-5}就好了,用法为%c{整数}或者%caller{整数},整数为包名路径,如果小于0就是排除前面n个@H_502_62@ %c{-3}@H_502_62@ MainActivity.onCreate(MainActivity.java:108)@H_502_62@

4、日志配置详解

方法 描述 取值 缺省
configAllowLog@H_502_62@ 是否允许日志输出@H_502_62@ boolean@H_502_62@ true@H_502_62@
configTagPrefix@H_502_62@ 日志log的前缀@H_502_62@ String@H_502_62@ “ViseLog”@H_502_62@
configShowBorders@H_502_62@ 是否显示边界@H_502_62@ boolean@H_502_62@ false@H_502_62@
configLevel@H_502_62@ 日志显示最小等级@H_502_62@ Log@H_502_62@ Log.VERBOSE@H_502_62@
addParserClass@H_502_62@ 自定义对象打印@H_502_62@ Parser@H_502_62@ 无@H_502_62@
configFormatTag@H_502_62@ 个性化设置Tag@H_502_62@ String@H_502_62@ %c{-5}@H_502_62@

感谢

1、https://github.com/orhanobut/logger
2、https://github.com/pengwei1024/LogUtils
3、https://github.com/JakeWharton/timber

猜你在找的Android相关文章