Краткая версия - Почему ETWTraceEventSource возвращает 0 записей журнала для файла журнала круговой записи 100 мб?Чтение циркулярного файла ETW с ETWTraceEventSource
Длинная версия - Я изменил приложение IIS для использования регистрации ETW (используя пакет nuget). Мой источник событий выглядит следующим образом: -
[EventSource(Name = "MyEtwLog")]
public class MyEtwSource : EventSource
{
[Event(1, Level = EventLevel.Verbose)]
public void Debug(string message) { WriteEvent(1, message); }
[Event(2, Level = EventLevel.Informational)]
public void Info(string message) { WriteEvent(2, message); }
[Event(3, Level = EventLevel.Warning)]
public void Warn(string message) { WriteEvent(3, message); }
[Event(4, Level = EventLevel.Error)]
public void Error(string message) { WriteEvent(4, message); }
[Event(5, Level = EventLevel.Critical)]
public void Fatal(string message) { WriteEvent(5, message); }
}
И у меня сеанс, чтобы включить поставщика, который выглядит следующим образом: -
TraceEventSession _etwSession = new TraceEventSession(
"MyEtwLog", @"C:\Logs\MyEtwLog.etl") { CircularBufferMB = 100 };
etwSession.EnableProvider(
TraceEventProviders.GetEventSourceGuidFromName("MyEtwLog"),
TraceEventLevel.Always);
Материал IIS все работает нормально. Меня попросили написать WinForms приложение для просмотра этих журналов (пользователи не любят PerfView), так что у меня есть этот код: -
using (ETWTraceEventSource source = new ETWTraceEventSource(@"C:\Logs\MyEtwLog.etl"))
{
source.Dynamic.All += arg =>
{
// Process log entry
}
source.Process();
}
Пользователь создал 10 из этих журналов и на его машине (Windows 8.1). 8 из них отлично загружаются в приложение. Остальные 2 - 100 МБ и не отображают записей в журнале. Если я открою их в PerfView, я вижу, что в файле нет ничего плохого, и все записи журнала есть.
Отладка их на моей машине (также Windows 8.1). Я никогда не ударяю код в «Запись журнала процесса». После большого количества проб и ошибок я понял, что с помощью AllEvents вместо Dynamic.All работы: -
source.AllEvents += arg =>
{
// Log entries, woo!!!
}
I подтвержден это прекрасно работает на моем компьютере (Windows 7), но когда я прохожу вернуть приложение к пользователь я получаю точно такую же проблему! Я также воспроизвел это на машине Windows 2008 R2 (.net 4.5.2) и машине Windows 7 (.net 4.5.1).
Помощь !!!
Надеюсь, @mjsabby снова приходит на помощь! :) –