好用高扩展性的Android平台日志框架Slog

Slog

GitHub项目地址:https://github.com/shenbibo/Slog

概述

Slog是一个轻量级的Android平台的日志库,其是基于对当前开源的日志框架LoggerTimber的一个组合与扩展。具有极大的可扩展性,相比于原生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。

注意,上表中,如果simpleModetrue,则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);

normal_log

打印错误日志
// 打印throwable
Slog.e(new Throwable());
Slog.w(new RuntimeException(), "test log with warn priority = %d", Slog.WARN);

error_warn_log

打印jsonxml

jsonxml字符串采用的日志级别都是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);

json1
json2

打印
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值