## 需求
我們都知道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;
~~~