Вы не должны использовать глобальные переменные NLog Config для передачи локального контекста. Вместо этого вы должны использовать рекомендуемые способы обработки контекста в NLog:
https://github.com/NLog/NLog/wiki/Context
Например, вы можете создать объект Logger для каждого имеющегося у вас типа события:
var loggerA = NLog.LogManager.GetLogger("a");
loggerA.Info("Hello from a");
loggerA.Info("Goodbye from a");
var loggerB = NLog.LogManager.GetLogger("b");
loggerB.Info("Hello from b");
loggerB.Info("Goodbye from b");
И используйте ${logger}
в NLog FileTarget FileName:
<target name="logfile" xsi:type="File" filename="${logger}.txt" />
Вы также можете добавить пользовательское свойство в свой Logger с помощью Logger.WithProperty и использовать этот Logger для всех своих события:
var loggerPropA = NLog.LogManager.GetCurrentClassLogger().WithProperty("EventType", "a");
loggerPropA.Info("Hello from a");
loggerPropA.Info("Goodbye from a");
var loggerPropB = NLog.LogManager.GetCurrentClassLogger().WithProperty("EventType", "b");
loggerPropB.Info("Hello from b");
loggerPropB.Info("Goodbye from b");
И используйте ${event-properties:EventType}
в NLog FileTarget FileName:
<target name="logfile" xsi:type="File" filename="${event-properties:EventType:whenEmpty=App}.txt" />
В зависимости от того, сколько у вас активных типов событий (2 или 200) и их времени жизни (2 мин. или 2 дня), тогда вы можете изучить следующие параметры NLog FileTarget:
- openFileCacheTimeout
- openFileCacheSize
См. также https://github.com/NLog/NLog/wiki/File-target