我有一个已经使用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