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文档,在日志事件中添加自己的属性应该不会太复杂。然后,您可以在正确的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}