我實現了用於記錄事件的事件源類。在重複更改記錄事件的一種方法的簽名(參數名稱和參數類型)後,事件不再被正確記錄。例如,當記錄一個事件時,不是使用當前參數名稱設置Payload,而是使用用於該方法以前版本的參數記錄事件。例如:SLAB,out-of-process:更改事件源方法的簽名會導致不正確的事件記錄
[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:該方法的
版本N
[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進行測試,日誌仍然顯示不正確。看起來問題不在記錄事件,而在於閱讀它們。