NLog - Сохранить $ {message} в нескольких столбцах базы данных. - PullRequest
3 голосов
/ 29 августа 2011

Я хочу сохранить зарегистрированное сообщение ${message} в нескольких столбцах в базе данных, как показано в следующем примере:

Мои сообщения регистратора будут следовать по пути User|Action, например:

logger.Info("John Doe|Logged in application"}  
logger.Info("Mike Doe|Deleted a file"}

Теперь я хотел бы сохранить User в столбце в моей базе данных, например, logsTable.user и Action в другом столбце, например, logsTable.action.

Есть лилюбой способ синтаксического анализа ${message} с помощью регулярных выражений или некоторых других правил (для разделения сообщений в соответствии с определенным символом, в моем примере это «|») для сохранения в параметрах (в моем случае, я хотел быпервая часть сообщения для ввода в параметре @user и вторая часть в параметре @action)?

1 Ответ

4 голосов
/ 29 августа 2011

Согласно документации NLog не должно быть слишком сложно добавлять свои собственные свойства в событие журнала.Тогда вы могли бы сделать метод расширения на правильном интерфейсе NLog и написать что-то вроде этого (не скомпилировано):

public void LogSomething(this ILog logger, string username, string message)
{
  LogEventInfo myEvent = new LogEventInfo(LogLevel.Debug, "", message);
  myEvent.LoggerName = logger.Name;
  myEvent.Properties.Add("User", username);
  logger.Log(myEvent);
}

Теперь вы сможете ссылаться на ${event-context:item=User}

...