Почему каналы Debug и Analytic недоступны для моей реализации ETW-EventSource?

Я использую библиотеку Microsoft EventSource для реализации механизма ведения журнала для моего веб приложение.

Эта библиотека предоставляет четыре канала регистрации событий: «Административный», «Оперативный», «Отладка» и «Аналитический». Административный и оперативный каналы работают нормально, каналы видны и я могу регистрировать события.

По какой-то причине каналы отладки и аналитики не отображаются в средстве просмотра событий, как вы можете видеть на этом снимке экрана:

введите здесь описание изображения

Вы можете увидеть мою реализацию EventSource ниже. Кроме того, я загрузил полный проект Visual Studio, включая консольное тестовое приложение здесь .

Кто-нибудь знает, почему доступны только Admin и Operational?

public static partial class WebAppEventSourceHandler
{
    [EventSource(Name = "Company-MyProject-WebApp")]
    private sealed class WebAppEventSource : EventSource
    {
        [Event(1, Message = "Instance: [{0}] Exception Type: [{1}] Exception Message: [{2}] Exception Stack Trace: [{3}] Inner Exception Type: [{4}] Inner Exception Message: [{5}] Inner Exception Stack Trace: [{6}]",
            Channel = EventChannel.Admin, Level = EventLevel.Critical, Version = 1)]
        internal void UnhandledException(string instance, string exceptionType, string exceptionMessage, string exceptionStackTrace,
            string innerExceptionType, string innerExceptionMessage, string innerExceptionStackTrace)
        {
            WriteEvent(1, instance, exceptionType, exceptionMessage, exceptionStackTrace, innerExceptionMessage,
                innerExceptionType, innerExceptionMessage, innerExceptionStackTrace);
        }

        [Event(2, Message = "Instance: [{0}] Controller: [{1}] Action: [{2}] Client Message: [{3}] Server Message: [{4}] Parameter: [{5}]",
            Channel = EventChannel.Admin, Level = EventLevel.Error, Version = 1)]
        internal void LogControllerActionError(string instance, string controller, string action,
            string clientSideMessage, string serverSideMessage, string parameter)
        {
            WriteEvent(2, instance, controller, action, clientSideMessage, serverSideMessage, parameter);
        }

        [Event(3, Message = "Instance: [{0}] Controller: [{1}] Action: [{2}] Client Message: [{3}] Server Message: [{4}] Parameter: [{5}]",
            Channel = EventChannel.Operational, Level = EventLevel.Warning, Version = 1)]
        internal void LogControllerActionWarning(string instance, string controller, string action,
            string clientSideMessage, string serverSideMessage, string parameter)
        {
            WriteEvent(3, instance, controller, action, clientSideMessage, serverSideMessage, parameter);
        }

        [Event(4, Message = "Instance: [{0}] Controller: [{1}] Action: [{2}] Message: [{3}] Server Parameter: [{4}]",
            Channel = EventChannel.Operational, Level = EventLevel.Informational, Version = 1)]
        internal void LogControllerActionInfo(string instance, string controller, string action,
            string message, string parameter)
        {
            WriteEvent(4, instance, controller, action, message, parameter);
        }

        [Event(5, Message = "Instance: [{0}] Controller: [{1}] Action: [{2}] Message: [{3}] Server Parameter: [{4}]",
            Channel = EventChannel.Debug, Level = EventLevel.Verbose, Version = 1)]
        internal void LogControllerActionDebug(string instance, string controller, string action,
            string message, string parameter)
        {
            WriteEvent(5, instance, controller, action, message, parameter);
        }

        [Event(6, Message = "Instance: [{0}] Controller: [{1}] Action: [{2}] Message: [{3}] Server Parameter: [{4}]",
            Channel = EventChannel.Analytic, Level = EventLevel.Verbose, Version = 1)]
        internal void LogControllerActionAnalytic(string instance, string controller, string action,
            string message, string parameter)
        {
            WriteEvent(6, instance, controller, action, message, parameter);
        }
    }
}

Я использовал этот фрагмент cmd для регистрации источника событий:

C:\CustomEventSources>wevtutil.exe im EventSourceExample.Company-MyProject-WebApp.etwManifest.man /rf:"C:\CustomEventSources\EventSourceExample.Company-MyProject-WebApp.etwManifest.dll" /mf:"C:\CustomEventSources\ EventSourceExample.Company-MyProject-WebApp.etwManifest.dll"


person Philipp Stauss    schedule 04.03.2016    source источник
comment
Вы активировали опцию отображения аналитических журналов в параметрах просмотра событий?   -  person magicandre1981    schedule 04.03.2016
comment
Спасибо. Вот и все. Я не знал, что я должен активировать его явно.   -  person Philipp Stauss    schedule 05.03.2016
comment
хорошо, я разместил это как ответ.   -  person magicandre1981    schedule 05.03.2016


Ответы (1)


По по умолчанию Аналитика и Отладка отключены:

Аналитические журналы и журналы отладки по умолчанию отключены. Когда они включены, они могут быстро заполниться большим количеством записей. По этой причине вы, вероятно, захотите включить их на определенный период, чтобы собрать некоторые данные для устранения неполадок, а затем снова отключить их. Вы можете выполнить эту процедуру, используя либо интерфейс Windows, либо командную строку.

Вы должны отображать их вручную в настройках Eventviewer:

  1. Запустите средство просмотра событий.
  2. Щелкните меню View. Если выбрано Show Analytic and Debug Logs, журналы аналитики и отладки уже видны. Никаких дальнейших действий не требуется. Если Show Analytic and Debug Logs не выбрано, выберите Show Analytic and Debug Logs, чтобы сделать эти журналы видимыми.

введите здесь описание изображения

person magicandre1981    schedule 05.03.2016