Android轻量级日志管理框架
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大师代发,拒绝转载,转载需要作者授权
Android轻量级日志管理框架的更多相关文章
- 【开源.NET】 分享一个前后端分离的轻量级内容管理框架
开发框架要考虑的面太多了:安全.稳定.性能.效率.扩展.整洁,还要经得起实践的考验,从零开发一个可用的框架,是很耗时费神的工作.网上很多开源的框架,为何还要自己开发?我是基于以下两点: 没找到合适的: ...
- 使用Monitor调试Unity3D Android程序日志输出(非DDMS和ADB)
使用Monitor调试Unity3D Android程序日志输出(非DDMS和ADB) http://www.cnblogs.com/mrkelly/p/4015245.html 以往调试Androi ...
- Android Studio日志工具的使用
Android Studio的LogCat工具 Verbose:对应Log.v(),这个方法用于打印那些最为琐碎的信息,意义最小的日志信息.是Android日志里面级别最低的一种. Debug:对应L ...
- Android中日志工具的使用
添加LogCat到你的Eclipse日志在任何项目的开发过程中都会起到非常重要的作用,在Android项目中如果你想要查看日志则必须要使用LogCat工具.当你第一次在Eclipse中运行Androi ...
- Android的电源管理框架
Android的电源管理框架 Android通过锁和定时器来切换系统的状态,使系统的功耗降至最低,整个系统的电源管理框架分成五个部分:应用层,framework层,JNI层,HAL层和内核层.电源管理 ...
- Android中日志信息的打印方式
Android中日志信息的打印方式主要有以下7种: 1)System.out(i级别) 2)System.err(w级别) 3)Log.v 4)Log.d 5)Log.i 6)Log.w 7)Log. ...
- 【开源.NET】轻量级内容管理框架Grissom.CMS(第三篇解析配置文件和数据以转换成 sql)
该篇是 Grissom.CMS 框架系列文章的第三篇, 主要介绍框架用到的核心库 EasyJsonToSql, 把标准的配置文件和数据结构解析成可执行的 sql. 该框架能实现自动化增删改查得益于 E ...
- [原创]adb使用教程v1.0-----by-----使用logcat快速抓取android崩溃日志
原文再续,书接上回:<使用logcat快速抓取android崩溃日志>中提到的工具包可以下载拉~ <使用logcat快速抓取android崩溃日志>:http://www.cn ...
- 基于java.util.logging实现轻量级日志记录库(增加根据当前类class初始化,修复线程池模型(javaEE)下的堆栈轨迹顺序与当前调用方法不一致问题)
前言: 本章介绍自己写的基于java.util.logging的轻量级日志记录库(baseLog). 该版本的日志记录库犹如其名,baseLog,是个实现日志记录基本功能的小库,适合小型项目使用,方便 ...
随机推荐
- UVALIVE 3571 Visible Lattice Points
就欧拉函数然后地推一下. #include <map> #include <set> #include <list> #include <cmath> ...
- 用户空间缺页异常pte_handle_fault()分析--(上)【转】
转自:http://blog.csdn.net/vanbreaker/article/details/7881206 版权声明:本文为博主原创文章,未经博主允许不得转载. 前面简单的分析了内核处理用户 ...
- CppCMS1.0.3 Build by VS2012
1.CppCMS简介 CppCMS是一个C++的Web开发框架(不是一个CMS).它不同于大多数其他Web开发框架,如巨蟒Django , Java的Servlets ,或C++ Wt因为它在设计和调 ...
- nginx 根据url访问次数限制
#获取日期 date=`date +"%y%m%d"` #设置日志路径 data="/data/logs/abc.com/access.log" #配置文件路径 ...
- jmeter压测脚本编写与静态文件处理
一.压测脚本编写 概述:工具为谷歌浏览器-->F12-->Network,访问被测站点,通过其中的请求的地方来构造压测脚本 二.静态文件处理 概述:静态文件包括css/js/图片等,它们有 ...
- [BZOJ1017][JSOI2008]魔兽地图DotR 树形dp
1017: [JSOI2008]魔兽地图DotR Time Limit: 30 Sec Memory Limit: 162 MBSubmit: 2597 Solved: 1010[Submit][ ...
- [scrapy] 爬了第一页就停止 filtered off site request to
我碰到这个问题的原因是 allowed_domains 写错了 至于还有没有别的原因就不知道了
- redis的lua脚本拓展,返回nil及其判断
redis自带的lua脚本 127.0.0.1:6379> hget team wyc "{\"name\":\"wyycc\",\" ...
- HNOI2016 游记
题外 忽然想起去年的HNOI2015总结里好像引了一句诗: 此情可待成追忆,只是当时已惘然. Day0 唔,感觉不知道想些什么,只是觉得其实还没有做好准备,想学的东西学的仓促,想复习的东西,也只能看一 ...
- Android访问WCF服务(使用json实现参数传递)
经过多日努力, 终于勉强弄明白了Android访问WCF服务的方法. 服务端实现 一, 实现服务. 操作契约 [ServiceContract] public interface IService { ...