2016-11-21 6 views
0

Я хотел бы использовать ETW для регистрации событий и считаю, что у меня все правильно настроено. Однако, когда приложение закрывается, я не вижу никаких событий в файле. У меня есть FileLoggingSession и LoggingChannel, созданные и связанные. У меня нет ошибок при использовании LoggingChannel. Кажется, что все работает правильно, но в файлах журналов нет сообщений, которые я отправляю.ETW регистрация в UWP

public EtwLogger() 
    { 
     _channel = new LoggingChannel(LibSettings._etwLogChannel, null); 
     _channel.LoggingEnabled += _channel_LoggingEnabled; 
     _session = new FileLoggingSession(LibSettings._etwLogSession); 
     _session.LogFileGenerated += _session_LogFileGenerated; 
     _session.AddLoggingChannel(_channel); 
    } 
    public Task Log(LogEntry logEntry) 
    { 
     if (!isDisposed && _channel.IsEnabled(SeverityToLoggingLevel(logEntry.Severity))) 
     { 
      string message = $"{logEntry.TimeStamp.ToLocalTime().ToString("s")} {SeverityToString(logEntry.Severity)} : "; 
      if (logEntry.Source?.Length > 0) 
       message += $"{logEntry.Source} {logEntry.Message}"; 
      else 
       message += $"{logEntry.Message}"; 
      _channel.LogMessage(message, SeverityToLoggingLevel(logEntry.Severity)); 
      Debug.WriteLine($"ETW: {message}"); 
     } 
     return Task.FromResult(0); 
    } 

Любая помощь будет оценена по достоинству. Благодарю.

+0

Я предполагаю, что вы не используете свой собственный манифест ETW? Какой провайдер вы записываете? – Sunius

+0

Я не уверен, что вы просите. У меня нет пользовательского манифеста, но не уверен в вашем вопросе о провайдере. В принципе, я просто хочу регистрировать сообщения о событиях, используя структуру ETW. Я использовал пример приложения UWP для большей части этого кода. Я просто не вижу вызовы .LogMessage (...), отображаемые в файле .etl. Благодарю. –

+0

Ничего. Он работает, мне просто нужно заманить программу близко и выпустить .CloseAndSaveToFileAsync() –

ответ

0

Решено. Мне нужно выпустить .CloseAndSaveToFileAsync(), когда программа завершает (или приостанавливает).

Спасибо.

+0

Чтобы быть более кратким, я добавил обработчик приостановки и вызвал метод в журнале, который вызвал .CloseAndSaveToFileAsync(). Затем я переименовал последний файл в свой «стандартный» протокол журнала. –

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