我有一個已經使用NLog的項目。應用程序創建一個給定類的實例,將一個ILogger實例傳遞給它,然後在實例中調用一個「execute」方法 - 系統是多線程的,並且可以同時運行多達200個這樣的實例,日誌文件可以變得大而難以閱讀。NLog爲類的每個實例創建新的日誌文件
我們有一個要求,建立每一個類的實例一個新的日誌文件,並將其與該實例的輸出存儲(他們每個人都有一個唯一的標識符)
我的問題是:是否有可能有NLOG爲每個類的實例創建一個新文件?我知道你可以爲不同的類使用不同的日誌文件,我想要的是每個類的每個實例都有一個不同的日誌文件。
我看了網上,但無法找到關於此的很多信息,我不想通過創建我自己的日誌記錄類,如果它已經照顧在NLog重新發明輪子。
下面是我懷孕了證明重新配置現有的記錄儀時,會發生什麼控制檯應用程序 - 它本質上改變了記錄
class Program
{
static void Main(string[] args)
{
BackgroundWorker bw1 = new BackgroundWorker();
bw1.DoWork += Bw1_DoWork;
bw1.RunWorkerAsync();
BackgroundWorker bw2 = new BackgroundWorker();
bw2.DoWork += Bw2_DoWork;
bw2.RunWorkerAsync();
Console.ReadLine();
}
private static void Bw1_DoWork(object sender, DoWorkEventArgs e)
{
workLoad one = new workLoad("One");
one.execute();
}
private static void Bw2_DoWork(object sender, DoWorkEventArgs e)
{
workLoad one = new workLoad("Two");
one.execute();
}
}
public class workLoad
{
private ILogger _logger { get; set; }
private string _number { get; set; }
public workLoad(string number)
{
_logger = LogManager.GetCurrentClassLogger();
_number = number;
var target = (FileTarget) LogManager.Configuration.FindTargetByName("DebugFile");
target.FileName = $"c:\\temp\\File{number}.txt";
LogManager.ReconfigExistingLoggers();
}
public void execute()
{
for (int i = 0; i < 1000; i++)
{
_logger.Info(_number + " LOOPING" + i);
}
}
}
這將導致所有輸出將一個文件的所有實例(二.txt)日誌文件的示例如下。
2017年6月13日17:00:42.4156 TestNlog.workLoad兩個LOOPING0 2017年6月13日17:00:42.4156 TestNlog.workLoad一個LOOPING0 2017年6月13日17:00:42.4806 TestNlog。 WorkLoad One LOOPING1 2017-06-13 17:00:42.4746 TestNlog.workLoad兩個LOOPING1 2017-06-13 17:00:42.4806 TestNlog.workLoad一個LOOPING2 2017-06-13 17:00:00 42.4806 TestNlog.workLoad二LOOPING2 2017-06-13 17:00:42.4946 TestNlog.workLoad One LOOPING3 2017-06-13 17:00:42.4946 TestNlog.workLoad兩個LOOPING3 2017-06-13 17:00:42.4946 TestNlog.workLoad一個LOOPING4 2017-06-13 17:00:42.4946測試Nlog.workLoad 2 LOOPING4 2017-06-13 17:00:42.5132 TestNlog.workLoad One LOOPING5 2017-06-13 17:00:42.5132 TestNlog.workLoad Two LOOPING5 2017-06-13 17:00:00 42.5132 TestNlog。 WorkLoad One LOOPING6 2017-06-13 17:00:42.5257 TestNlog.workLoad兩個LOOPING6 2017-06-13 17:00:42.5257 TestNlog.workLoad一個LOOPING7 2017-06-13 17:00:00 42.5257 TestNlog.workLoad Two LOOPING7 2017-06-13 17:00:42.5407 TestNlog.workLoad兩個LOOPING8 2017-06-13 17:00:42.5407 TestNlog.workLoad一個LOOPING8 2017-06-13 17:00:42.5407 TestNlog.workLoad兩個LOOPING9 2017-06-13 17:00:42.5407 TestNlog.workLoad One LOOPING9 2017-06-13 17:00:42.5577 TestNlog.workLoad Two LOOPING10 2017年6月13日17:00:42.5577 TestNlog.workLoad一個LOOPING10
理想的ID來尋找一切從例如一個進入one.txt,同時一切從例如,兩個是在two.txt(你可以看到有200多個運行像這可能是一個問題!)
試過了,我可能會錯過一些東西,但我不能看到一種方法來做到這一點。 – 5NRF