2015-01-13 3 views
1

Я начал использовать регистрацию ETW в соответствии с рекомендациями Microsoft для ее высокой производительности и предотвращения повторного использования колеса и т. Д.ETW - удаление файла журнала приводит к сбою регистрации?

Однако я обнаружил, что если кто-то удалит файл журнала, то регистрация просто прекратит работу до тех пор, пока сеанс трассировки не будет остановлен и перезапущен. Я мог бы жить с этим, если API фактически вернул ошибку, чтобы я мог перезапустить его сам, но ничего не возвращает код ошибки.

Мой вопрос: как я могу справиться с этой ситуацией? Есть ли способ сказать ETW заблокировать файл, чтобы предотвратить удаление? Должно ли что-то возвращать ошибку?

Обратите внимание, что я использую уровень API NT5, но эта проблема наблюдается на NT6 +.

Соответствующие API,:

RegisterTraceGuids 
StartTrace 
EnableTrace 
TraceEvent 

Я надеялся, что контроль обратного вызова может быть вызван, когда файл был удален, но ничего не происходит.

ответ

0

Если вы используете библиотеку EventSource, пожалуйста, взгляните на запись блога Vance Morrison, Why doesn't my EventSource produce any events? Короткий ответ: исключения, как правило, проглатываются, потому что системы ведения журнала не должны разбивать ваше приложение. В записи в блоге он объясняет, как просматривать исключения, которые возникают, путем установления сеанса внешней трассировки. Возможно, вы захотите периодически опросить наличие файла и выпустить отчет об ошибке каким-либо образом, который вы можете обнаружить.

+0

Я использую raw win32 API, поэтому исключений не может быть (кроме нарушений доступа, которые означают ошибку в ОС) – paulm

+0

Я использовал его из оболочки .net, и я не вижу много информации о неудачах там также. ETW разработан в основном для создания файла журнала - это отдельный процесс из поколения трассировки событий. –

+0

Итак, вы считаете, что удаление файла журнала при его запуске означает, что он должен просто провалиться до следующей перезагрузки? Несмотря на то, что сеанс ETW не прошел следующую перезагрузку? Похоже на огромный недостаток для меня – paulm

Смежные вопросы