【问题标题】:Why are the channels "Debug" and "Analytic" not available for my ETW-EventSource implementation?为什么通道“调试”和“分析”不适用于我的 ETW-EventSource 实现?
【发布时间】:2016-06-18 01:32:48
【问题描述】:

我正在使用 Microsoft EventSource Library 为我的 Web 应用程序实现日志记录机制。

这个库提供了四个日志事件通道:“Admin”、“Operational”、“Debug”和“Analytic”。 Admin 和 Operational 频道工作正常,频道可见,我可以记录事件。

由于某种原因,调试和分析通道没有出现在事件查看器中,正如您在此屏幕截图中看到的那样:

您可以在下面看到我的 EventSource 实现。此外,我还上传了完整的 Visual Studio 项目,包括一个控制台测试应用程序here

有谁知道为什么只有 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 sn -p 来注册事件源:

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"

【问题讨论】:

  • 您是否在 Eventviewer 选项中激活了显示分析日志的选项?
  • 谢谢。而已。我不知道我必须明确激活它。
  • 好的,我把它作为答案发布了。

标签: c# debugging logging etw etw-eventsource


【解决方案1】:

default the Analytic and Debug are disabled:

默认情况下禁用分析和调试日志。启用后,它们 可以快速填写大量条目。为此,你 可能会想要在指定的时间内打开它们以收集 一些故障排除数据,然后再次将其关闭。你可以 使用 Windows 界面或 命令行。

你必须manually show them in the Eventviewer options:

  1. 启动事件查看器。
  2. 单击View 菜单。如果选择Show Analytic and Debug Logs,则分析和调试日志已经可见。没有进一步的行动 必需的。如果没有选择Show Analytic and Debug Logs,则选择Show Analytic and Debug Logs 使这些日志可见。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-21
    • 1970-01-01
    • 1970-01-01
    • 2013-01-02
    • 2020-04-27
    • 2018-03-23
    相关资源
    最近更新 更多