У меня есть приложение с несколькими потоками и вы хотите, чтобы каждый поток имел отдельный NLog Config (dest, format).
Мне нужно записывать каждый поток данных в другой файл, поэтому вам нужно настроить код (отдельный файл dest/filename/format).NLog multi instance, How?
я обнаружил, что каждый раз, когда я определил LoggingConfiguration
по-другому и назначил его LogManager.Configuration
, а затем получить GetLogger()
его перезаписать последний конфиг и вернуть один экземпляр из Logger
так создается только один выход.
Кажется, что у меня не может быть много экземпляров Logger в NLog !!!
Чтобы проверить, я написал ниже тестовый код.
List<Logger> Loggers = new List<Logger>();
for (int i = 0; i < 10; i++)
{
var config = new LoggingConfiguration();
var fileTarget = new FileTarget();
config.AddTarget("file", fileTarget);
fileTarget.Layout = "${message}";
fileTarget.CreateDirs = true;
fileTarget.FileName = Convert.ToString(i)+".txt";
fileTarget.FileAttributes = Win32FileAttributes.ReadOnly | Win32FileAttributes.WriteThrough;
fileTarget.LineEnding = LineEndingMode.CRLF;
var rule2 = new LoggingRule("*", LogLevel.Trace, fileTarget);
config.LoggingRules.Add(rule2);
LogManager.Configuration = config; // overwrite last config
Loggers.Add(LogManager.GetLogger(Convert.ToString(i)));
}
for (int i = 0; i < 10; i++)
{
Loggers[i].Info("text "+ Convert.ToString(i)); // all written in single output
}
Все выходы написаны на «9.txt»!
Как много экземпляров класса NLog.
Спасибо