SLAB, вне процесса: изменение подписи метода источника события приводит к неправильной регистрации событий
Я реализовал класс источника событий для регистрации событий. После многократного изменения подписи (имен параметров и типов параметров) одного метода, который регистрирует события, события больше не регистрируются правильно. Например, когда событие регистрируется, вместо того, чтобы устанавливать полезную нагрузку с именем текущего параметра, события регистрируются с использованием параметров, использованных для предыдущей версии метода. Например:
Версия 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);
}
Когда этот метод вызывается для регистрации событий, они регистрируются, устанавливая значение Payload с именем параметра paramName вместо newParamName.
А теперь вопрос: как очистить «кеш», чтобы система забыла старую версию метода, а новый метод мог правильно регистрировать события?
Л.Э .: Я тестировал протоколирование с PerfView. Забавно, она правильно читает логи. Я снова протестировал с SemanticLogging-svc.exe, журналы по-прежнему отображаются неправильно. Похоже, проблема не в регистрации событий, а в их чтении.