[C#]NLog進階使用(2) - 指定類別套用不同rule

這次要分享的是NLog如何針對各個class套用不同rule的設定

 

使用情境:

小弟是最近需要做一個監控各AP的後端程式

老闆希望可以把各種AP的Log做分類

所以才需要將Log寫到不同的地方

假設我們今天有兩個類別DriveCar、DriveBus

DriveCar.cs

class DriveCar
{
    private static Logger logger = NLog.LogManager.GetCurrentClassLogger();

    public DriveCar()
    {
        logger.Trace("I' m driving car now.");
    }
}

DriveBus.cs

class DriveBus
{
    private static Logger logger = NLog.LogManager.GetCurrentClassLogger();

    public DriveBus()
    {
        logger.Trace("I' m driving bus now.");
    }
}

我們希望將這兩個類別需要記述的Log寫到不同的地方

參考了一下NLog官方的WikiLogger-specific routing

內容還是要從rule裡面動手腳

<logger name="*" levels="Trace, Debug, Info, Warn" writeTo="file" />

其中name="*"是預設所有類別都會套用這條rule

現在我們針對上述兩個類別分別給不同的rule

<logger name="NLogConsoleDemo.Models.DriveCar" levels="Trace, Debug, Info, Warn" writeTo="Dir_Car" />
<logger name="NLogConsoleDemo.Models.DriveBus" levels="Trace, Debug, Info, Warn" writeTo="Dir_Bus" />

之後看一下測試結果

針對不同類別寫入不同資料夾

​結論:

NLog的Wiki還有很多寶可以挖!!

初用NLog的心得分享到此

如果有說明錯誤的歡迎指正

 

 

相關的程式碼可以參考NLogConsoleDemo