一個非常好用的code trace library 怎樣好用呢
往往我們專案Debug 會去需要看我們的錯誤 localhost Deubg 當然沒什麼問題
但是如果我們網站已經上線或是已經在server的測試階段,我們後端引發前端的錯誤
你很難依照當前頁面去判斷,而且很常就是我localhost 沒問題啊 怎上server 就有問題.
這時候我們就需要去在我們的程式碼加上記錄錯誤訊息的方法 這時候就需要用到我們的nlog
不只記錄exception,你也可以當作操作紀錄去分析client端的操作.
而且我們不只本機可以記錄 還可以連接我們的db 或是連接例如slack,exceptionless
不只記錄exception,你也可以當作操作紀錄去分析client端的操作.
而且我們不只本機可以記錄 還可以連接我們的db 或是連接例如slack,exceptionless
開始吧 首先Install
Install-Package NLog.Config
我們先從程式開始說
用法很簡單我們建立一個static
namespace MyNamespace { public class MyClass { private static Logger logger = LogManager.GetCurrentClassLogger(); } }or
using NLog; Logger logger = LogManager.GetLogger("MyClassName");
接著我們可以分別去依照級別去寫log了
using NLog; public class MyClass { private static Logger logger = LogManager.GetCurrentClassLogger(); public void MyMethod1() { logger.Trace("Sample trace message"); logger.Debug("Sample debug message"); logger.Info("Sample informational message"); logger.Warn("Sample warning message"); logger.Error("Sample error message"); logger.Fatal("Sample fatal error message"); // alternatively you can call the Log() method // and pass log level as the parameter. logger.Log(LogLevel.Info, "Sample informational message"); } }
什麼? 就這樣? 沒錯就是這樣
但是最重要的 我是要記錄在哪??
這時候就要轉到一開始所說的nlog.config了
target -主要就是我們指定的rule 跟存放的位置 layout 共同顯示的東西
rules 就是我們指定的規則會指向哪個target 做存放
我個人是習慣分 共用跟嚴重的 共用的就拿來放操作紀錄或是一些訊息 嚴重的就拿來顯示錯誤訊息 其實我是覺得盡量別分太多 不然你到時候debug 開那麼多資料夾來比對也是很累
只要你寫入log 時想好 你要怎規劃方面你去搜尋
產出來 如果按照上面原本預設的fileName路徑 就會在我們專案底下多個logs的資料夾 這部分你也可以自己規畫要放在哪
當然nlog 不只這些用法 還有最重要的存入DB 或是寄mail阿 之類的
有興趣可以去github上面讀一下 有更多更高端的配置用法
https://github.com/NLog/NLog/wiki/Tutorial
總結
當然其實叫夯的做法就是連結slack或exceptionless
我們又站在巨人肩膀上做事了,這兩套主要都有強大的搜尋功能.
其實該把log寫在哪裡也是一門學問
我總不可能在每個方法裡去新增log 太笨了.
其實方法有很多種 ex HTTP Handlers 或是搭配一些AOP framework ex Castle.DynamicProxy, Unity Interception 去攔截, Spring AOP, PostSharp 這些都很好用
跟AOP(Aspect-Oriented Programming)脫離不瞭87%關係,蝦? 你說AOP是啥??
有空後面再補上nlog 怎搭配web api 去AOP的去紀錄request response
跟連結slack或exceptionless的方法
沒有留言:
張貼留言