Slog
GitHub项目地址:https://github.com/shenbibo/Slog
概述
Slog
是一个轻量级的Android
平台的日志库,其是基于对当前开源的日志框架Logger
和Timber
的一个组合与扩展。具有极大的可扩展性,相比于原生Android Log
,有以下新特性。
- 支持对日志的格式化排版输出,显示效果更清晰,更方便查看。
- 支持输出打印日志方法的栈和当前线程信息。
- 支持打印对象,支持自定义对象解析器,默认提供对数组,集合等解析。
- 支持使用多个自定义日志适配器,以决定日志的不同处理方式,默认提供
LogcatTree
适配器。 - 支持每次打印日志之前自定义日志输出配置,从而达到不同的日志输出效果。
- 支持自定义日志组装器,从而显示不同效果的格式化字符串。
引用方法
compile 'com.sky.slog:slog:0.4.0'
用法示例
初始化Slog
一般地在应用的Application
类的onCreate()
方法中调用如下类似代码。
Slog.init(new LogcatTree());
初始化时,至少需要传入一个日志适配器,当然我们也可以添加多个适配器,这个后面详解。
以上是最简单的初始化方式,我们还可以在初始化的时候对日志输出做全局配置,如下。
Slog.init(new LogcatTree()) // 初始化,设置适配器
.showThreadInfo(true) // 设置是否打印日志的线程的信息
.prefixTag("test") // 设置全局日志的前缀
.logPriority(Slog.FULL) // 设置日志输出级别
.methodCount(2) // 显示栈中方法的个数,默认从调用日志接口的方法往stack下计算
.methodOffset(1) // 显示从调用日志打印接口的方法往stack下计算的偏移数
.simpleMode(false); // 设置简单模式,无任何格式,等同于调用logcat,默认值为false.
以上方法的作用与默认值。
方法 | 默认值 | 作用 |
---|---|---|
prefixTag | “Android” | 设置全局日志前缀。 |
logPriority | Slog.FULL | 日志的输出级别,FULL表示可以输出任何级别的日志, NONE,表示不输出任何日志。 |
methodCount | 1 | 设置显示栈中方法到最终组装的日志中的个数,默认从调用日志接口的方法往stack下计算。 |
methodOffset | 0 | 设置从调用日志打印接口的方法往stack下的偏移数。 |
showThreadInfo | false | 设置是否打印日志的线程的信息。 |
simpleMode | false | 设置简单模式,无任何格式,不显示线程信息,方法调用,等同于调用logcat。 |
注意,上表中,如果simpleMode
为true
,则methodCount, methodOffset, showThreadInfo
将无效
另外我们还可以通过Slog.getSetting()
获取Setting
对象之后,在任何时候对全局Log输出配置项进行修改。
基本使用
使用以下方式初始化Slog
。
Slog.init(LogcatTree()).perfixTag("TestSlog").showThreadInfo(true);
打印普通日志
// 打印普通日志
Slog.d("sky debug");
Slog.i("sky info");
// 打印格式化字符串
Slog.d("this is a format string log, str1 = %s, int value2 = %d, boolean3 = %b", "string1", 2, true);
打印错误日志
// 打印throwable
Slog.e(new Throwable());
Slog.w(new RuntimeException(), "test log with warn priority = %d", Slog.WARN);
打印json
和xml
json
和xml
字符串采用的日志级别都是Debug
的。
打印json字符串
String jsonEmpty = "";
String jsonEmpty2 = "{}";
String jsonNull = null;
Slog.json(jsonEmpty);
Slog.json(jsonEmpty2);
Slog.json(jsonNull);
String json = "{'xyy1':[{'test1':'test1'},{'test2':'test2'}],'xyy2':{'test3':'test3','test4':'test4'}}";
Slog.json(json);
String jsonArray =
"{ 'employees': [ {'firstName':'John', 'lastName':'Doe'}, {'firstName':'Anna', 'lastName':'Smith'}, "
+ "{'firstName':'Peter', 'lastName':'Jones'}]}";
Slog.json(jsonArray);