## 需求
我们都知道android中log是这么写的:
~~~
Log.d(TAG, "This is a debug log");
~~~
我们在调试的时候经常会输出这行代码,这个方法有两个参数,一个是TAG,一个是真正要输出的内容。我们不愿意每次花费时间去思考应该定义什么**TAG**,我们希望有一个东西可以帮我们定义好TAG,我们只需要写正真有意义的内容就行。这才是程序员思维,而不是程序猿思维。其实就是这样一个东西:
~~~
Log.d("This is a debug log");
~~~
如果我们更“懒”*(懒在这里是褒义词)*,可能会希望这样写:
~~~
L.d("This is a debug log");
~~~
等等!是不是还能更进一步,我希望终端输出的log更加**美观**,并且输出的地方是可以有一个**超链接**,这样我们直接点击输出内容的超链就可以直接定位到具体的代码中了。
~~~
D/LoggerActivity﹕ ╔══════════════════════════════════════════════════════════
D/LoggerActivity﹕ ║ Thread: main
D/LoggerActivity﹕ ╟──────────────────────────────────────────────────────────
D/LoggerActivity﹕ ║ BaseActivity.onCreate (BaseActivity.java:32)
D/LoggerActivity﹕ ║ LoggerActivity.setViews (LoggerActivity.java:26)
D/LoggerActivity﹕ ╟──────────────────────────────────────────────────────────
D/LoggerActivity﹕ ║ This is a debug log
D/LoggerActivity﹕ ╚══════════════════════════════════════════════════════════
~~~
对了,我还希望log能帮我们优雅的打印出map、list、json、array等**Object对象**,而不用我们去自己拼接。
~~~
D/LoggerActivity﹕ ╔══════════════════════════════════════════════════════════
D/LoggerActivity﹕ ║ Thread: main
D/LoggerActivity﹕ ╟──────────────────────────────────────────────────────────
D/LoggerActivity﹕ ║ BaseActivity.onCreate (BaseActivity.java:32)
D/LoggerActivity﹕ ║ LoggerActivity.setViews (LoggerActivity.java:38)
D/LoggerActivity﹕ ╟──────────────────────────────────────────────────────────
D/LoggerActivity﹕ ║ String[5] {
D/LoggerActivity﹕ ║ [android, ios, wp, linux, window]
D/LoggerActivity﹕ ║ }
D/LoggerActivity﹕ ╚══════════════════════════════════════════════════════════
~~~
哦,还有。我不希望在release包中出现log,但懒得自己整天设置log的**开关**,能不能自动化。但有时候我们一些东西还必须在release包中调试,比如需要签名的微信登录SDK。我希望能加个**强制显示log的开关**,一旦开启无论如何都显示log信息。
~~~
// 定义是否是强制显示log的模式
protected static final boolean LOG = false;
~~~