Android轻量级日志管理框架

代码地址如下:
http://www.demodashi.com/demo/12134.html

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 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 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
Android轻量级日志管理框架

代码地址如下:
http://www.demodashi.com/demo/12134.html

注:本文著作权归作者,由demo大师代发,拒绝转载,转载需要作者授权

posted on   demo例子集  阅读(5980)  评论(0编辑  收藏  举报

(评论功能已被禁用)
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· Windows编程----内核对象竟然如此简单?

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示