日志系统ViseLog使用详解
2016-12-12 22:59
190 查看
前言
日志系统无论在服务端开发还是移动端开发,都是一个基础且重要的能力。开发人员在代码调试以及错误定位过程中,大多数都要依赖日志信息,一个简洁灵活的日志系统是相当重要的。Android系统提供了Log类用来记录日志,一般情况下我们几乎都是对这个Log类进行简单的封装,例如增加全局控制是否打印日志的开关、增加打印到文件的能力等,但是不能很直观的展示日志的信息。在网上参考了几个比较好的日志开源库后(如Logger、LogUtils、Timber等),结合其各自的优点就诞生了ViseLog日志系统,本文将对如何使用ViseLog系统以及其核心功能点做详细的解释。项目引用:
compile 'com.vise.xiaoyaoyou:viselog:1.0.0'
项目地址: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方法中进行如下配置: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的树
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{整数},整数为包名路径,如果小于0就是排除前面n个 | %c{-3} | MainActivity.onCreate(MainActivity.java:108) |
方法 | 描述 | 取值 | 缺省 |
---|---|---|---|
configAllowLog | 是否允许日志输出 | boolean | true |
configTagPrefix | 日志log的前缀 | String | “ViseLog” |
configShowBorders | 是否显示边界 | boolean | false |
configLevel | 日志显示最小等级 | Log | Log.VERBOSE |
addParserClass | 自定义对象打印 | Parser | 无 |
configFormatTag | 个性化设置Tag | String | %c{-5} |
感谢
1、https://github.com/orhanobut/logger2、https://github.com/pengwei1024/LogUtils
3、https://github.com/JakeWharton/timber
相关文章推荐
- Java使用Log日志系统(common-logging和log4j)
- php的高性能日志系统 seaslog 的安装与使用
- Java使用Log日志系统(common-logging和log4j)
- 日志系统ELK使用详解(二)--Logstash安装和使用
- 使用 Exceptionless 作为 Log Server 搭配 NLog 记录系统日志
- logback的使用和logback.xml详解,在Spring项目中使用log打印日志
- logwatch命令_Linux logwatch 命令用法详解:可定制和可插入式的日志监视系统
- linux 使用 syslog 服务,将出错信息输入到 “/var/log/message” 系统日志文件中去
- log4j使用详解--创建自己的日志系统
- 日志系统ELK使用详解(三)--elasticsearch安装
- Java使用Log日志系统(common-logging和log4j)
- 浅谈C++日志系统log4cxx的使用小结详解
- Python中使用logging模块打印log日志详解
- 日志系统ELK使用详解(一)--如何使用
- Linux 系统命令及其使用详解(大全)
- Log4j日志管理系统简单使用说明
- 关于linux系统中命令的使用详解(续)
- Log4j日志管理系统简单使用说明
- Log4j日志管理系统简单使用说明
- 理解和使用aix的日志系统