一、日誌工具功能
封裝debug類,需要實現功能:
1.控制所有日誌是否列印;
2.除了log,warning,error外,給更多日誌種類(不同顏色);
3.格式化列印日誌;
4.不定引數,自動拼接成字串;
5.上傳日誌到伺服器;
二、logger類
1.控制日誌列印
封裝debug中關於log的方法;
使用靜態方法,宣告靜態字段,控制log,warning,error是否列印;
debug原始碼中log方法有兩個過載;
第二個引數context可以傳參gameobject,hierarchy或者project視窗中的預製體,雙擊console日誌會直接跳轉選中傳入的遊戲物體;
我們可以將這個方法合併,第二個引數預設空;
2.色彩列印
列印不同顏色使用富文字;
string.format("",color,obj);
3.多引數拼接
之前使用go語言的fmt.println有個功能很好用,連續傳多個引數自動拼接;
public static void log(params object messags)
debug.log(message, null);
}//呼叫
logger.log("net error:",error,"msgid:",msgid);
4.格式化列印
格式化列印封裝原本debug.logformat方法;
public static void logformat(string format, params object args)
三、loggermgr類
繼承monobeh**ior的單例;
初始化logger中的三個控制列印的字段;
監聽這個事件;如果日誌開關為關閉狀態return;
if (isopenlog)
break;
case logtype.warning:
break;
case logtype.error:
break;}};
四、上傳日誌
loggermgr中初始化上傳日誌資訊;
方法寫在logger中,在loggermgr開始呼叫;
public static void init(string url)
onlogcallback方法中將日誌和棧資訊儲存成檔案,等待上傳;
private static void onlogcallback(string condition, string stacktrace, logtype type)
s_logstr.remove(0, s_logstr.length);
}
loguploader類開啟協程上傳日誌檔案;
public static void startuploadlog(string logfilepath, string desc)
在logger類中同樣封裝上面的方法,所有的日誌都通過logger列印;
public static void uploadlog(string desc)
五、日誌雙擊溯源問題
以上的**有個很大的問題,現在我們雙擊不會回到呼叫logger的地方,只會跳轉到logger類中呼叫debug.log的地方;
有個很簡單的辦法解決,將上面**編譯成dll;
另外查詢原始碼也可以自己決定掉轉位置;
具體方法,通過反射獲日誌取棧資訊,根據logger類返回的棧資訊路徑,篩選出要跳轉的位置;
通過官方提供的方法跳轉到相應位置;
unityeditorinternal.internaleditorutility.openfileatlineexternal(string filename, int line);
六、呼叫void start()
unity列印日誌到檔案
對於列印日誌到檔案,我們可以選擇使用log4net外掛程式,這個外掛程式有很強大的功能,但是經常我們並不需要這麼多的功能,有時我們可能只想輸出一下異常而已,所以我推薦自己寫dll來實現這個功能。具體做法如下 在vs裡新建類庫專案,貼上下面的 using system.io using unityen...
日誌列印分析工具 mylog 使用wiki
1 說明 1 本資料夾包含原始碼src以及示例檔案sample 2 編譯src生成output 包括i nclude和lib 3 使用output的lib和include,具體可以檢視sample的makefile和code 4 日誌級別為fatal,warning,notice,trace,deb...
定製日誌工具 自由地控制日誌的列印
寫乙個專案,為了方便測試,很多地方都會列印大量的日誌。但是,開發期間列印出來當然方便,但是專案上線後還是會列印就會影響執行和洩露資料,刪除日誌列印語句嘛有麻煩而且回頭維護時還是需要這些日誌。所以為了能自由控制,開發時列印,上線後不列印 做法就是定製自己的日誌工具。新建乙個類logutil publi...