如題
在Unity3D中,基本的Log使用方式是使用Debug.Log()。
這個方式可以快速的在Unity編輯器的Console視窗看到寫入的 log 訊息,
不過如果訊息一多就很難快速看到想看的訊息,
之前寫asp.net的經驗,使用 Microsoft.Extensions.Logging 來建立一個 Logger 的框架,就可以利用框架的特性來過濾 Log 訊息,
如此一來,就可以用設定的方式來呈現自己想要看的訊息。
要做到這件事,首先需要把 Log 的 dll 放進 Unity 中,這個可以使用 https://dotblogs.com.tw/fphoenix/2019/05/05/222220 之前整理的方式來辦到,
要讓Unity原生的Logger可以整合到Microsoft.Extensions.Logging中需要實作兩個Type,一個是ILogger,另一個是ILoggerProvider,
實作程式碼如下,
UnityConsoleLogger:
UnityConsoleLoggerProvider:
接下來寫段測試程式看看,
結果成功呈現在Console視窗上,
但是對訊息點擊後程式跑到的位置不對…
雖然對 Unity 的 Log 設計有點疑問,對於他的Log點擊後可以到script所在的位置這點,覺得對於程式除錯很有用,
想要既有Microsoft.Extensions.Logging的好處,又不想失去這個優點。
觀察了Unity架構後發現,Console視窗能夠在點擊後到程式碼所在位置的條件是程式是在Unity內的script,
這樣的話,或許把 Logger 編譯成 dll 就可以達成目的,
改成 dll 後測試,達成目的!