我实现了一个用于记录事件的事件源类。在反复更改记录事件的一种方法的签名(参数名称和参数类型)后,不再正确记录事件。例如,当记录事件时,不是使用当前参数名称设置有效负载,而是使用用于该方法的先前版本的参数记录事件。例如:
方法的版本 n:
[Event(5, Message = "Action: {0}",
Task = Tasks.PAGE,
Keywords = Keywords.USER_ACTION,
Level = EventLevel.Informational)]
public void LogAction(string action, string paramName)
{
this.WriteEvent(5, action, paramName);
}
该方法的版本 n+1:
[Event(5, Message = "Action: {0}",
Task = Tasks.PAGE,
Keywords = Keywords.USER_ACTION,
Level = EventLevel.Informational)]
public void LogAction(string action, string newParamName)
{
this.WriteEvent(5, action, newParamName);
}
当调用此方法来记录事件时,将记录它们并使用参数名称 paramName 而不是 newParamName 设置有效负载值。
现在,问题是:如何清除“缓存”,以便系统忘记旧版本的方法,而新方法可以正确记录事件?
LE:我用 PerfView 测试了日志记录。有趣的是,它可以正确读取日志。我用 SemanticLogging-svc.exe 再次测试,日志仍然显示不正确。看起来问题不在于记录事件,而在于阅读它们。