Log是什么
Log 在软件开发中被用于在控制台打印输出信息,方便代码跟踪和调试。 log 一般分为4个等级,级别从高到低依次为 ERROR、WARN、INFO、DEBUG。通过定义特别的级别信息,可以得到我们所需要的打印信息,例如,在生产环境中,我们可能不关心 INFO 级别的日志,我们只关注 ERROR 或者 WARN 级别的日志。
使用Android原生的日志功能
首先,我们先来看如何在 android 中打印日志。我们可以调用 Log.e(),Log.i(),Log.w(),Log.d() 分别代表打印 ERROR、INFO、WARN、DEBUG 级别的日志。这些方法都可以接收两个参数,第一个是 tag,主要用于标识,方便查看信息时进行过滤。第二个是输出信息 msg 。具体看一下代码。
Log.e("cat", "fuck");
Log.v("cat", "fuck");
Log.i("cat", "fuck");
Log.d("cat", "fuck");
这里我的筛选规则是 v(Verbose) 以上的,所以全部信息都被打印出来了。
01-18 01:57:51.528 9053-9053/com.chenantao.main E/cat: fuck
01-18 01:57:51.528 9053-9053/com.chenantao.main V/cat: fuck
01-18 01:57:51.528 9053-9053/com.chenantao.main I/cat: fuck
01-18 01:57:51.528 9053-9053/com.chenantao.main D/cat: fuck
到这里基本的使用方法就说完了,有什么问题呢?由于输出信息只能是字符串类型,那么当我打印出一串长长的 json 格式的字符串,看起来是否很蛋疼?或者,当我看到一段莫名奇妙的 log 信息,我想看是哪个家伙调用了它,但在茫茫的代码海中寻找,简直不要太刺激。基于以上两个问题,我们可以使用 github 上的一些开源的日志工具库。
Logger库的使用
地址:https://github.com/orhanobut/logger
Logger 是一个简单、牛逼的 android 开源库。
它提供了非常多的功能:
* 线程信息
* 类信息
* 方法信息
* 非常人性化的json 文本的输出
* 简洁的输出
* 可以在输出信息处跳转到源码处
导入依赖
在你项目的 build.gradle 中加入
repositories {
// ...
maven { url "https://jitpack.io" }
}
dependencies {
compile 'com.github.orhanobut:logger:1.12'
}
使用
简单使用
嗯,就这么简单,你就可以开始使用了。先来看看打印一段普通的文本。
Logger.init("cat");
Logger.e("哈哈哈");
注意,在使用前要先调用 init 进行初始化,并且只需调用一次。
控制台输出:
我操,这效果,我先给个99分吧,余下一分看它其他功能再决定给不给。
个性化配置
你也可以自定义标签名,输出信息,或者全局控制是否进行打印等。
Logger
.init(YOUR_TAG) // 如果仅仅调用 init 不传递参数,默认标签是 PRETTYLOGGER
.methodCount(3) // 显示调用方法链的数量,默认是2
.hideThreadInfo() // 隐藏线程信息,默认是隐藏
.logLevel(LogLevel.NONE) // 日志等级,其实就是控制是否打印,默认为 LogLevel.FULL
.methodOffset(2) // default 0
.logTool(new AndroidLogTool()); // custom log tool, optional
}
更多用法
常用打印日志的方法。
Logger.d("hello");
Logger.e(exception, "message");
Logger.json(JSON_CONTENT);
输出结果:
你也可以进行动态配置,例如设置调用方法链的数量:
Logger.t(1).e("哇嘎嘎");
总结
这篇为开山篇,仅仅只是介绍这个库以及一些简单用法,并没有列出完整的 api ,其实也没多少 api 。用 android studio 的话,你直接打个 Logger. 便有提示了,你看方法名大概都能知道有什么用,实在不知道的话,也可以查看 doc 注释。
好了先到这里,下一篇将带来源码解析。(手动斜眼笑)。