2
我有一個多線程應用程序,並希望每個線程都有單獨的NLog配置(dest,格式)。
我需要將每個線程數據記錄到不同的文件,因此需要在代碼中配置(分隔的dest /文件名/消息格式)。NLog多實例,如何?
我發現,我的定義不同LoggingConfiguration
,每次分配它LogManager.Configuration
然後得到 GetLogger()
它覆蓋最後的配置並返回Logger
所以只創建一個輸出單個實例。
看來我不能在NLog中有多個Logger實例!
測試我寫了以下測試代碼。
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 Class的多重實例如何。
謝謝