我为记录事件实现了一个事件源类.在多次更改记录事件的一种方法的签名(参数名称和参数类型)后,不再正确记录事件.例如,当记录事件时,不是使用当前参数名称设置Payload,而是使用用于先前版本方法的参数记录事件.例如:
方法的版本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);
}
Run Code Online (Sandbox Code Playgroud)
版本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);
}
Run Code Online (Sandbox Code Playgroud)
当为记录事件调用此方法时,将记录它们,并使用参数名称paramName而不是newParamName设置Payload值.
现在,问题是:如何清除"缓存",系统会忘记方法的旧版本,新方法可以正确记录事件?
LE:我用PerfView测试了日志记录.有趣的是,它正确地读取日志.我使用SemanticLogging-svc.exe再次测试,日志仍然显示不正确.看起来问题不在于记录事件,而在于阅读它们.