2014-12-04 41 views
1

我正在使用NLog的应用程序来让我们跟踪工作流的执行情况。每个执行都被指定为一个“跟踪ID”(GUID),该GUID通过将所组成和发送的消息捆绑在一起而被保留。理想情况下,我们希望使用名称中的此跟踪ID将每个执行记录到其自己的日志文件中。例如NLog目标文件名

日志\ MyExecution_97301078-2119-48e9-876d-64002257b399.txt
日志\ MyExecution_1e5b60d5-95b5-4fdc-94cc-886d379e2b13.txt
日志\ MyExecution_07b427a9-106d-4865-a288-625e1cd56dd1.txt

这是否可以使用NLog目标实现?

+0

这可能帮助.. http://stackoverflow.com/questions/20352325/logging-in-multiple-files-using -nlog – jKlaus 2014-12-04 15:34:40

+0

嗨这个例子似乎为单独的日志文件调用显式名称,我希望能够创建日志文件的名称由独特的ID确定,在编译时未知。 – Paddy 2014-12-04 15:54:48

+0

你如何跟踪GUID?你是否明确地将它包含在每条日志消息中?你是否将其设置在NLOG上下文对象之一中?您是否使用内置的.NET System.Diagnostics.Trace.CorrelationManager.ActivityId? – wageoghe 2014-12-08 18:50:30

回答

1

您不限于在配置文件中注册多个记录器;你可以使用Configuration API。例如(从链接拍摄,你可能会编辑您的具体情况)

// create configuration object 
var config = new LoggingConfiguration(); 

// create a target 
var fileTarget = new FileTarget(); 
config.AddTarget("SomeName", fileTarget); 

// set properties 
fileTarget.FileName = "something/guid.txt"; 

// activate the configuration 
LogManager.Configuration = config;