Unity 日誌列印工具

2022-09-19 19:27:07 字數 2562 閱讀 3560

一、日誌工具功能

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