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...