相信很多人會在程式內埋log以便問題的追查,尤其是線上的問題不能像開發時期可以設定中斷點來debug,而且很多問題都是特殊操作方式才會造成的問題,因此日誌的寫入是一件很重要的事情。所以今天跟大家介紹如何寫入日誌。
「大頭前輩,我遇到一個問題,但是我沒辦法透過設定中斷點來debug耶,有沒有甚麼方法可以debug。」
一大早小光因為昨晚在開發時遇到問題,所以一大早就跟大頭請教如何處理問題的方法。這時大頭因為手上專案都處理得差不多所以心情很好。
「那你有寫Log嗎,可以看看你Log的內容看有沒有幫助。」
這時小光想一下,所以這樣跟大頭說。
「我有寫耶,不過當程式結束後就看不到了,可是我又不能不把它關掉。」
大頭似乎有點納悶地看著小光,後來想到他的疑問點是甚麼了。
「難道...你用Console.WriteLine在寫log。」
這時小光點點頭,大頭聽到這答案差點沒昏倒,不過大頭很鎮定的跟他說。
「來吧,我們來學學NLog。」
一如往昔的我們先來加載相依的套件,所以首先先輸入以下的指令。
dotnet add package NLog.Web.AspNetCore
dotnet add package NLog.Config
接下來我們開始處理專案所需的程式碼。
在加載相依套件後要再Program.CreateHostBuilder
加入以下內容。
.UseNLog();
沒錯就是這麼簡單,接下來看寫日誌的地方該怎麼寫。
當認識了DI之後寫日誌就方便多了,因為連日誌都是由注入的方式,而且使用的是Microsoft.Extensions.Logging.Abstractions
的ILogger
,所以也沒有直接相依NLog所以使用方式如下所示。
public WeatherForecastController(ILogger<WeatherForecastController> logger)
{
_logger = logger;
}
所以接下來要寫log時就透過_logger
使用下列指令來寫即可。
如此就可以寫入日誌了,這裡還有一個要注意的地方,這些方法還有個多載可以傳Exception進去,如果有Exception可以使用該方法,最後可以參考NLog Config來設定日誌的樣式。
今天主要是介紹如何透過NLog把日誌寫到log檔內,相信對各位線上的問題盤查有很大的幫助。