C# 在运行时在NLog中设置记录器的writeTo属性
我的C#程序有以下NLog.config:C# 在运行时在NLog中设置记录器的writeTo属性,c#,.net,nlog,C#,.net,Nlog,我的C#程序有以下NLog.config: 我的程序需要根据用户配置将消息记录到不同的日志文件集,例如,有时写入“file1,file2”,有时写入“file2,file3,file4” 那么,是否可以根据用户配置在运行时自定义“logger1”中的“writeTo”属性 非常感谢 如果要写入多个文件,只需使用逗号分隔的字符串作为规则中的“writeTo”属性“file1、file2、file3”。共有6个目标,规则规定写入3个文件,因此将考虑使用文件1、文件2和文件3进行日志记录 但您需要
我的程序需要根据用户配置将消息记录到不同的日志文件集,例如,有时写入“file1,file2”,有时写入“file2,file3,file4”
那么,是否可以根据用户配置在运行时自定义“logger1”中的“writeTo”属性
非常感谢 如果要写入多个文件,只需使用逗号分隔的字符串作为规则中的“writeTo”属性“file1、file2、file3”。共有6个目标,规则规定写入3个文件,因此将考虑使用文件1、文件2和文件3进行日志记录 但您需要的是在运行时执行。下面是C代码 正如代码注释所解释的,它定义了新的目标和规则。NLog.config将在运行时重新定义 下面是我的NLog.config目标和规则
这些目标和规则将在运行时由我们的C#代码重新定义,并且只有file7.log和file8.log将被考虑用于日志记录
Console.Out.WriteLine("Logget started");
Console.Out.WriteLine("");
Logger logger = LogManager.GetCurrentClassLogger();
var config = new LoggingConfiguration();
//Define targets
var fileTarget = new FileTarget();
config.AddTarget("file7", fileTarget);
var fileTarget2 = new FileTarget();
config.AddTarget("file8", fileTarget);
// Set target properties
fileTarget.FileName = "file7.log";
fileTarget.Layout = "${message}";
fileTarget2.FileName = "file8.log";
fileTarget2.Layout = "${message}";
// Define rules
var rule1 = new LoggingRule("*", LogLevel.Debug, fileTarget);
config.LoggingRules.Add(rule1);
var rule2 = new LoggingRule("*", LogLevel.Debug, fileTarget2);
config.LoggingRules.Add(rule2);
LogManager.Configuration = config;
logger.Trace("trace log message");
logger.Debug("debug log message");
logger.Info("info log message");
logger.Warn("warn log message");
logger.Error("error log message");
logger.Fatal("fatal log message");
logger.Log(LogLevel.Info, "Sample informational message");
Console.ReadKey();
}