1. 程式人生 > >.NET 黑魔法 - asp.net core 日誌系統

.NET 黑魔法 - asp.net core 日誌系統

asp.net core 裡如何記錄日誌呢?

這要從asp.net core的依賴注入說起,在asp.net core裡的依賴注入真是無所不在,各種面向切面的介面與事件。

好吧,來點乾貨。

首先,我們希望有這樣一種呼叫方式(或者說asp.net core整合的日誌功能只能用這種方式):

在asp.net core裡,框架內的很多功能都是依賴注入,不需要new XXX(),只需要在物件的建構函式裡注入就好啦。 上圖的ILogger<LogController> logger,就是asp.net core日誌功能的介面。

this.logger.LogInformation("這裡是日誌資訊的訊息"); 就是記錄一個資訊日誌,通常跟業務相關。 this.logger.LogError(e, e.StackTrace, new string[] { "附加引數1", "附加引數2" });就是記錄一個異常日誌。

當然,還有其他級別的方法,比如.LogDebug(),.LogWarning() 等等。 

到此,如何使用日誌功能已經講完了,下來我們看看怎麼配置它。

注意途中Startup方法和Configure方法,這裡我們用了NLog,那麼NLog是什麼呢?

 其實他是asp.net core ILogger介面的實現,我要通過介面注入,又沒有例項化的程式碼,所以例項化的工作只能交由別人來做了,各位有興趣可以實現一套自己的日誌系統。 

最後,別忘了把名為nlog.config的配置檔案放在專案根目錄,它決定了我們日誌系統的行為,比如模板等等:

關於NLog更多的介紹我們以後再講,會介紹它的日誌級別,日誌模板等。