0

Layout упоминается в конфигурационном файле выглядит следующим образом:Расширенные свойства в NLog

Timestamp: ${date}${newline}Title: ${event-properties:item=Title}${newline}Message: ${message}${newline}Machine: ${machinename}${newline}${newline}${LayoutFooter} 

на исключение, я хочу добавить еще два свойства этой схемы, которая включает в себя Stack Trace и Inner Exception Message.

Я достижения вышеуказанного требования, путем изменения раскладки для:

Timestamp: ${date}${newline}Title: ${event-properties:item=Title}${newline}Message: ${message}${newline}${event-properties:item=StackTrace}${event-properties:item=InnerException}Machine: ${machinename}${newline}${newline}${LayoutFooter} 

А потом через код,

private static void WriteLog(LogEvent logEvent) 
{ 
    var log = LogManager.GetLogger(logEvent.Logger); 
    LogEventInfo logMsg = new LogEventInfo(); 
    logMsg.Message = logEvent.Message; 
    logMsg.Level = logEvent.LogLevel; 
    logMsg.Properties.Add("Title", logEvent.Title); 
    if(!string.IsNullOrEmpty(logEvent.StackTrace)) 
    { 
     logMsg.Properties.Add("StackTrace", "Stack Trace: " + logEvent.StackTrace + Environment.NewLine); 
    } 
    if(!string.IsNullOrEmpty(logEvent.InnerException)) 
    { 
     logMsg.Properties.Add("InnerException", "Inner Exception: " + logEvent.InnerException + Environment.NewLine); 
    } 
    log.Log(logMsg); 
} 

Следуя вышеизложенным подходом, если мне нужно добавить более расширенные свойства , Мне нужно изменить файл конфигурации и код.

В случае одного конфигурационного файла этот подход прекрасен, но в случае нескольких файлов конфигурации это требует много времени.

Есть ли способ, посредством которого я могу добавлять расширенные свойства только путем изменения кода и без изменений в файле конфигурации.

Мне удалось достичь этой функциональности, когда я использовал библиотеку Microsoft Enterprise Logging, поскольку у нее было ExtendedProperties свойство в LogEntry класс Microsoft.Practices.EnterpriseLibrary.Logging.

ответ

1

Есть ли способ, благодаря которому я могу добавлять расширенные свойства только путем изменения кода и без изменений в файле конфигурации.

Существует ${all-event-properties} renderer и он имеет несколько параметров, как визуализировать.

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