這次要分享的是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官方的Wiki - Logger-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