【发布时间】:2019-09-11 05:36:13
【问题描述】:
例如,这个类以编程方式初始化 NLog 配置:
public class NLogConfig
{
public NLogConfiguration(string traceFileName, LogLevel minLogleven, LogLevel maxLogLevel)
{
var config = new NLog.Config.LoggingConfiguration();
// Targets where to log to file
var logfile = new NLog.Targets.FileTarget("logfile") { FileName = $"{traceFileName}.log" };
logfile.Layout = @"${date:format=HH\:mm\:ss}|${level}|${message} ${exception:format=tostring}";
// Rules for mapping loggers to targets
config.AddRule(minLogleven, maxLogLevel, logfile);
// Apply config
LogManager.Configuration = config;
}
}
现在,我在两个不同的类中调用此配置,例如:
public class A
{
public A()
{
var nlogConfig = new NLogConfig("Trace1", LogLevel.Trace, LogLevel.Fatal);
}
}
public class B
{
public B()
{
var nlogConfig = new NLogConfig("Trace2", LogLevel.Info, LogLevel.Fatal);
}
}
现在的问题是,两个不同的日志级别规则不会被 Nlog 配置采用,所以在这种情况下,Trace1.log 和 Trace2.log 日志都具有 trace 级别,而我预计Trace1.log 以Trace 级别记录,Trace2.log 以info 日志级别记录。
如何解决此问题,以便动态更改日志级别?
【问题讨论】: