有時候我們已經有自己的 Log Server 或是希望將Log 拋向第三方服務,比方說 Slack 或是 telegram,
這時就需要自己擴充
由於我們希望透過統一的操作方式來將Log 訊息儲存到多個目的,故需要客製化一個 Target
首先我們先安裝必要的套件(這邊先使用Console 示範)
我們加入nlog.config 檔案,並且設定「永遠複製」
其中,我們加入一個 type 為 LogServer 的標籤,名稱命名為 logapi
接著我們來實作自訂的 LogTarget
其中 [Target(“LogServer”)] 代表我們自訂的 Type,類別繼承AsyncTaskTarget,
相關的 Url 與Token 代表LogServer 的位置與有效簽章
LogAPITarget.cs
建立好 Target Type 後,就要建立一至性的Logger,前面有提到我希望保持原生操作 logger 的方式
來操作寫入的動作,故需要實作 ILogger(LogServerLogger.cs)
最後我的透過 LogServerFactory 來管理NLog 的生命週期,並且提供請求建立ILogger
實際使用時可以如下(Program.cs)
Console 的輸出
檔案的輸出
LogServer 的紀錄
接著我們透過 ASP.NET WebApi 來使用NLog
專案引用套件如下
Program.cs
Controller
此時,我們發現注入的是 LogServerFactory ,進入後都要透過 factory.create 來建立 ILogger,顯得不太方便;
有沒有相關方法來直接注入ILogger
以下透過AI 來改寫
nlog.config
LogServerLoggerProvider.cs
Program.cs
參考
沒有留言:
張貼留言