我想實體化一個記錄器實體并為其設定一些屬性,只要我通過該名稱獲取記錄器,就可以在任何地方使用這些屬性,這是否可行以及如何做?
例子 -
Logger logger = LogManager.GetLogger("MyLogger");
我想使用作業名稱為我的預定作業在此記錄器上設定一些屬性 -
logger.Property = job.Name;
作業.cs
public class Job{
Logger logger = LogManager.GetLogger("MyLogger");
logger.Property = job.Name;
//Call worker
worker.Process();
}
工人.cs
public class worker{
Logger logger = LogManager.GetLogger("MyLogger");
public static Process(){
logger.Error("Test");
}
}
在工人中,我想記錄作業名稱,實作這一目標的最佳方法是什么?我想將此擴展到作業或作業人員發出的任何進一步呼叫。
uj5u.com熱心網友回復:
您可以考慮在任何地方使用相同的 Logger-instance,并使用WithProperty:
public static class MyLogger {
public static Logger Instance = NLog.LogManager.GetLogger("MyLogger").WithProperty("Hello", World");
}
public class Job{
Logger logger = MyLogger.Instance;
logger.Property = job.Name;
//Call worker
worker.Process();
}
您可以考慮使用MDLC(任務范圍屬性)或GDC(全域范圍屬性)的替代方法
另見:https : //github.com/NLog/NLog/wiki/Context
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/353485.html
