「Do.000」Logger2.2.1的使用详解

image

很多同学应该都知道Android有一款相当不错的额Log开源框架Logger!
在Logger1.1.5的版本时好像还不能将日志写入文件中,但是在最新版本的2.2.1版本已经可以了。

然后我发现我想找一些使用教程的时候,几乎都是1.15版本的。所以我想要不我来补一篇2.2.1的吧!废话不多说!

官方github,永远都是我们或许最新版本和教程的最好途径:
所以先贴出来了:https://github.com/orhanobut/logger

它的使用其实很简单一共可以就分为三步:

第一步:gragle导入

compile 'com.orhanobut:logger:2.1.1'

第二步:初始化

Logger.addLogAdapter(new AndroidLogAdapter());

第三步:使用

Logger.d("debug");
Logger.e("error");
Logger.w("warning");
Logger.v("verbose");
Logger.i("information");
Logger.wtf("wtf!!!!");

通过上面三步就可以实现如下图的美丽清秀的log了:

附加:Logger的打印方法中还对动态字符串、集合、以及json、Xml的支持:

Logger.d("hello %s", "world");

Logger.d(MAP);
Logger.d(SET);
Logger.d(LIST);
Logger.d(ARRAY);

Logger.json(JSON_CONTENT);
Logger.xml(XML_CONTENT);

json的打印效果图:

Logger的基本配置

上面的配置基本可以满足我们的基本需求了。
但是往往我们还会有一些特殊需求

首先我们需要了解的是,通过Logger的源码我们不难知道。上面初始化时,配置的AndroidLogAdapter()其实还有带参构造方法

public AndroidLogAdapter() {
    this.formatStrategy = PrettyFormatStrategy.newBuilder().build();
}
public AndroidLogAdapter(FormatStrategy formatStrategy) {
    this.formatStrategy = formatStrategy;
}

我们点击进入FormatStrategy类,会发现这个Adapter的很多适配项其实都是通过FormatStrategy进行配置的,Logger的github上也给出了如下的配置表

FormatStrategy formatStrategy = PrettyFormatStrategy.newBuilder()
  .showThreadInfo(false)  // 是否显示线程信息 默认显示 上图Thread Infrom的位置
  .methodCount(0)         // 展示方法的行数 默认是2  上图Method的行数
  .methodOffset(7)        // 内部方法调用向上偏移的行数 默认是0 
  .logStrategy(customLog) // 改变log打印的策略一种是写本地,一种是logcat显示 默认是后者(当然也可以自己定义)
  .tag("My custom tag")   // 自定义全局tag 默认:PRETTY_LOGGER
  .build();

注:关于methodCount(0),我再解释一下。以上如图为例如果这个方法设置为1的话,那么将看不到第二行

MainActivity.printPretty (MainActivity.java:33)

然而能看到onCreate中内部调用的一个方法。

但其实我到目前为止还没有用过它。

Logger的高级配置

我们先来看一下Logger这个开源库

这就是它全部的源码类了!

我们简单理解一下这里面的主要类和主要接口及其实现:

Logger类:用来初始化和打印log的类

LogAdapter接口:可以用来配置是否打印log以及FormatStrategy
    |-AndroidLogAdapter
    |-DiskLogAdapter

FormatStrategy接口:用来实现格式策略以及配置LogStrategy
    |-PrettyFormatStrategy:logcat显示样式实现类
    |-CsvFormatStrategy:写入cvs文件的样式实现

LogStrategy接口:用来实现log的显示的策略
    |-DiskLogStrategy    写入本地文件
    |-LogCatlogStrategy  logCat显示

那么大概了解了它的主要类和接口之后,我们就差不多可以为所欲为了!

高级配置一:根据构建应用的版本来确定是否输出log

这样我们就再也不用再手动配置ture/false来确定发布版本了!

第一步:gradle中配置一个boolean变量——LEO_DEBUG

Android{
    buildTypes {
        release {
          ***
          buildConfigField "boolean", "LEO_DEBUG", "false"
          ***
        }
        debug {
          ***
          buildConfigField "boolean", "LOG_DEBUG", "true"
          ***
        }
    }
}

第二步:可以继承AndroidLogAdapter重写isLoggable方法

@Override public boolean isLoggable(int priority, String tag) {
    return BuildConfig.LOG_DEBUG||priority==Logger.ERROR;
}

这样就实现了!

“高级配置二:自定义样式”

通过阅读PrettyFormatStrategy的源码,我们看到下图的代码,这就是配置其样式的地方。
所以如果你想,你也可以将单线的替换成双线的“═ ╠ ╔ ╚”。当然这个类中还可以自定义其他的一些内容,你也可以去探索一下!

“高级配置三:自定义LogStrategy”

其实关于log输入显示。就两种一种写入本地文件,一种显示在logCat!
看了上面的代码结构,可能你会问这两种方式都有了,还需要自定义吗!

如果你用过Logger你就会发现,它写入到本地的文件是csv格式
用excel打开是这样的!

可能你并不习惯,你还是想用txt
那么需要自定义一个CustomDiskStrategy类实现LogStrategy接口

将DiskLogStrategy的实现代码copy过去然后,修改下面代码中的csv为txt就好了

但由于LogStrategy都是在FormatStrategy内部配置的,所有我们还需要自定义一个CustomFormatStrategy类,其实也是可以简单复制CvsFormateStrategy类,然后用我们刚才自定义的CustomDiskStrategy替换掉里面所有的DiskLogStrategy就好了!

最后的提示

如果你想要在logCat中打印出log,同时有想要写到文件中,那么你需要为Logger添加两个Adapter,如下图所示,我配置了自定义的TxtFormateStrategy和它自带的PrettyFormategy。之所以提醒。是因为我之前只配置了CvsFormateStrategy,结果死活打不出log。我调试了好一会,最后跟进去发现,它的FormateStrategy的功能是单一的,写本地就只写本地,logCat显示就只是logCat显示

好了,这一篇就写到这里。
最后感谢开源,给我提供了更多的学习资源。并让我实现更多可能性的同时还避免了重复造轮子!

一个不专注写Android的公众号
欢迎关注我的微信公众号『Android程序员日记』

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值