2015-06-10 3 views
0

У меня есть файл конфигурации NLog.Получите макет из цели в NLog

LoggingConfiguration nLogLoggingConfiguration; 

Тогда

foreach (var target in nLogLoggingConfiguration.AllTargets) 
     { 

Я хочу, чтобы получить расположение от цели, кажется, в памяти. Когда я навешиваю на это время отладки. Я нашел: target

То, что я хочу

${message}|${exception:format=tostring}|${stacktrace} 

ответ

0

Не все цели имеют макеты, так что вы должны получить элементы, которые наследуют от TargetWithLayout, тогда вы можете вызвать ToString на объект Layout. Пример:

foreach (var target in nLogLoggingConfiguration.AllTargets.OfType<TargetWithLayout>()) 
{ 
    string layoutString = target.Layout.ToString(); 
    Console.WriteLine(layoutString); 
} 
+0

Следующий вопрос, если целью является тип «TargetWithLayout». Можем ли мы добавить правило как «var loggerRule = new LoggingRule (ruleName, LogLevel.Fatal, target);'? –

+0

Я имею в виду 'var filter = new ConditionBasedFilter(); filter.Action = FilterResult.Log; filter.Condition = "(level == LogLevel.Fatal)"; var loggerRule = новый LoggingRule (ruleName, LogLevel.Fatal, target); loggerRule.Filters.Add (filter); '. –

+0

@Love я так думаю. Вы просто добавили его в коллекцию LoggerRules LoggingConfiguration. –

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