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
.