2016-12-19 2 views
1

Мне нужно настроить параметры NLog из другого приложения, по существу у меня есть основное приложение и приложение конфигурации, и вам нужно установить некоторые параметры журнала из приложения конфигурации.Использование значения NLog LogLevel из файла конфигурации AppSettings

Я попытался ниже, но minlevel является enum и не действует .. :(

<logger name="*" minlevel="${appsetting:MinimumLogLevel}" writeTo="File" /> 

Было бы идеально для этой работы, какие-то предложения?

Благодаря

ответ

2

minlevel атрибут действительно не является Layout, поэтому вы не можете использовать средства отображения макетов, например `$ {appsetting}.

Вы можете сделать это программно:

var configuration = LogManager.Configuration; 

//TODO find correct rule 
var rule = configuration.LoggingRules[0]; 

//disable all 
rule.DisableLoggingForLevel(LogLevel.Trace); 
rule.DisableLoggingForLevel(LogLevel.Debug); 
rule.DisableLoggingForLevel(LogLevel.Trace); 
rule.DisableLoggingForLevel(LogLevel.Info); 
rule.DisableLoggingForLevel(LogLevel.Warn); 
rule.DisableLoggingForLevel(LogLevel.Error); 
rule.DisableLoggingForLevel(LogLevel.Fatal); 


var minLevelRaw = System.Configuration.ConfigurationManager.AppSettings["minLevel"]; 
var minLevel = LogLevel.FromString(minLevelRaw); 

//enable correct one 
rule.EnableLoggingForLevels(minLevel, LogLevel.Fatal); //enable from minLevel to fatal 

LogManager.Configuration = configuration; 

или если он должен работать для всех правил, вы могли бы использовать GlobalThreshold:

var minLevelRaw = System.Configuration.ConfigurationManager.AppSettings["minLevel"]; 
var minLevel = LogLevel.FromString(minLevelRaw); 

LogManager.GlobalThreshold = minLevel; 
+0

совершенны, спасибо! – Pappy

Смежные вопросы