Android日誌列印小工具
背景
前段時間專案上線比較頻繁,問題也挺多。算是深刻體會了清晰明瞭的日誌對於bug排查的重要性。公司目前的專案已經經手了幾位開發者,程式碼風格各有不同,日誌比較雜亂。於是整理了一個日誌工具,形成自己的日誌風格,看起來自然得心應手,以後專案也用得到。 ofollow,noindex">感興趣的同學可以戳這裡瞭解下 。
功能介紹
支援輸出日誌到SD卡,列印方法呼叫樹,列印呼叫執行緒,json/xml格式化列印,http請求過程列印。
- 使用之前可以在Application初始化:
LogUtils.init(BuildConfig.DEBUG, getString(R.string.app_name));
- 預設列印
LogUtils.e("我是誰,我在哪,我要幹啥"); //設定tag為‘xxx’ LogUtils.tag("xxx").e("設定了tag是xxx");
來看下效果

- 列印方法樹
private void md() { //不列印執行緒資訊,列印方法數5 LogUtils.methodCount(5).e("是誰在召喚我"); LogUtils.printStack(false).e("不列印方法樹"); }

-
列印執行緒資訊
預設不列印執行緒資訊,需要
LogUtils.printThread(true)
來指定是否列印。
private void printThread() { //在子執行緒列印 ThreadUtil.start(new Runnable() { @Override public void run() { LogUtils.printThread(true).e("我在那個執行緒1111"); } }); LogUtils.printThread(true).e("我在那個執行緒333"); ThreadUtil.start(new Runnable() { @Override public void run() { LogUtils.printThread(true).e("我在那個執行緒222"); } }); }

- 列印json
//列印json LogUtils.json(Log.ERROR, gson.toJson(studentList));

-
輸出到SD卡
需要申請SD卡讀寫許可權
private void saveToSd() { //儲存各型別日誌到sd卡 LogUtils.saveDebugLogToSD("debug to sd"); LogUtils.saveErrorLogToSD("error to sd"); LogUtils.saveWarnLogToSD("warn to sd"); LogUtils.saveThrowableToSD(new RuntimeException()); LogUtils.saveLogToSD("test", "log to sd"); }


- 列印http請求過程
LogUtils.printHttpResponseData(url, params, result, json);
使用的okhttp3的非同步請求,添加了一個header,"Interface-Name"來標識介面功能,在okhttp的攔截器可以一次列印完整的請求過程,避免了同時發起多個請求時的日誌錯亂。okhttp日誌攔截器的程式碼網上很多就不貼了,來看下列印效果
