我想将记录的消息${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
参数)?
答案 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}