開發經驗總結(打造更優秀的日誌輸出工具類)

2021-06-27 02:13:41 字數 1828 閱讀 9637

android系統已經為我們提供了非常優秀的日誌輸出類log,那麼為什麼我們還要打造屬於自己的日誌輸出呢?請大家考慮這個問題

下面我來講解一下我對這個問題的理解

首先系統的工具類有天然的不可修改性,不利於擴張。log是系統內部提供的類,使用者不允許改到,所以沒有辦法 新增方法去擴張類的功能,開發乙個專案 幾乎每個類都有很多列印日誌方法,根據經驗幾乎每個人都有這樣的經歷。那麼問題來了。如果乙個類裡列印了10條log 如何去精確定位是哪一行**執行的呢,這個是系統部提供的,但是可以通過自定義log輸出方式輸出具體**位置。

其次系統的日誌類使用起來有一點點麻煩,每個日誌有兩個 引數類似這樣log.i(tag, str.tostring());

第乙個tag一般是為了標記這個日誌的,程式開發過程中一般使用類名以方便查詢和定位,不過這帶來的是確實非常多的重複勞動,比如每個需要用log的類都需要乙個類名的tag,使用時候還需要引用,如果可以自動生成應該是更完美的解決方式 。因為log 太常用了,使用自定義自動生成tag 的方式可以大大提高效率。

package com.jumige.mobile.allinone.utils;

import android.util.log;

/** * 日誌工具類

* 使列印日誌變得簡單 自動識別呼叫日誌函式的類名 方法名 與位置

* 不需要繁瑣的tag

* 可以方便的 設定debug模式 發布時候 可以直接修改debug為false 就不會輸出日誌了

* @author mathschild

* */

public class logutil

/*** get the current function name

* * @return name

*/private string getfunctionname()

for (stacktraceelement st : sts)

if (st.getclassname().equals(thread.class.getname()))

if (st.getclassname().equals(this.getclass().getname()))

return mclassname + "[ " + thread.currentthread().getname() + ": "

+ st.getfilename() + ":" + st.getlinenumber() + " "

+ st.getmethodname() + " ]";

} return null; }

public static void i(object str)

public static void d(object str)

public static void v(object str)

public static void w(object str)

public static void e(object str)

/*** 用於區分不同介面資料 列印傳入引數

* @param index

* @param str

*/private static void print(int index, object str)

if (log == null)

string name = log.getfunctionname();

if (name != null)

//close the debug log when debug is false

if(!debug)

} switch (index)

}}

開發Deluxems的一些經驗總結

1.用三元運算子實現新聞部分顯示 eval newcontent tostring length 25?eval newcontent tostring substring 0,25 eval newcontent tostring 2.貨幣驗證 可以輸入整數和帶兩位小數的數字 0 9 0 9 0 ...

我的開發板學習經驗總結

半年多時間,成功由於軟體碼奴轉型為電子碼農。走了很多彎路,也吸取了很多高手的經驗。完全走自學的路太難了,懂的人一句話可以說清楚的問題,自己去琢磨可能幾天都沒結果,浪費時間和精力,甚至減弱意志。幸運的是自學入門後直接做專案,有一些人可以請教。還是從am335x平台學起,這個平台資料全,原理圖設計檔案和...

關於前端開發的一些小經驗總結

0 開發的時候,對於控制台的警告一定給消除掉,一定要!1 就vue.js框架來說,能用 elemenet 元件,就盡量往 element 元件上靠,除非是你想自己實現自己的元件 2 對話方塊的控制變數最好寫在外面控制,我們組的專案好像一直都寫在對話方塊檔案的裡面 3 關於 v for 的使用,把 k...