我正在编写一个审计日志系统以集成到现有的软件中,并且数据库结构包括一个字段,用于记录有关正在记录的操作的详细信息。不必花哨;它不需要太多,当它需要时,在大多数情况下,开发人员会读取它以找出调用了哪个方法以及使用了哪些参数,诸如此类。这意味着虽然它应该是人类可读的,但它不需要被任何东西解析。因此,与其有很多重载,或者使用可怕的 switch case 字符串替换,我想一个写细节 blob 的好方法是进行日志调用,以获取正在记录的操作所需的参数的名称,以及值传递给他们的。我做了一些研究,
这是我所追求的粗略模拟:
Dictionary<string,string> parameters = new Dictionary<string,string>();
foreach (Parameter p in MethodCall)
{
parameters.Add(p.Name, p.Value.ToString());
}
LogEvent(EventType.Something, userID = thisUser, details = parameters);
我知道它可能比实践中的更复杂,但它为您提供了总体思路。在我的 LogEvent 方法中,有一些东西可以添加时间戳,为用户端日志查看器构建描述性句子(技术细节比我们向管理员和开发人员展示的要少,以免暴露我们的程序/数据库结构)和 - 理论上 - 构建参数详细信息字典中的某种 blob(可能是 JSON 或类似的)。