NLog - 在多个数据库列中保存$ {message}

时间:2011-08-29 07:40:06

标签: c# nlog

我想将记录的消息${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 个答案:

答案 0 :(得分:4)

根据NLog documentation,将自己的属性添加到日志事件中应该不会太复杂。然后你可以在正确的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}