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

本文关键字:保存 message 数据库 NLog | 更新日期: 2023-09-27 18:06:49

我想将记录的消息${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参数的第二部分)?

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

根据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}