【问题标题】:Trace.CorrelationManager.ActivityId as WADLogsTable columnTrace.CorrelationManager.ActivityId 作为 WADLogsTable 列
【发布时间】:2013-09-24 19:17:31
【问题描述】:

当使用System.Diagnostics 跟踪并以Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener 作为侦听器时,有没有办法将Trace.CorrelationManager.ActivityId 作为列自动包含在WADLogsTable 中?

【问题讨论】:

    标签: azure trace system.diagnostics


    【解决方案1】:

    Azure .NET SDK 的新版本在 WAD 表中包含一个 ActivityId 列,您可以使用 EventSource 派生类包含自定义列(刚刚在 Azure SDK 2.6 上验证了这一点,尽管您需要确保您使用的是 . NET 4.5.1,因为 .NET 4.5.0 似乎有一些导致静默失败的错误)。

    对于 ASP.NET 应用程序,在 Application_BeginRequest 方法中,您将执行以下操作:

    protected void Application_BeginRequest()
    {
        Guid requestId = Guid.NewGuid();
        System.Diagnostics.Trace.CorrelationManager.ActivityId = requestId;
        System.Diagnostics.Tracing.EventSource.SetCurrentThreadActivityId(requestId);     
    }
    

    您可以创建一个自定义的 EventSource 类,如下所示:

    [EventSource(Name="MyCompany-MyProduct-MyEventSource")]
    public class MyEventSourceWriter : EventSource
    {
        public static MyEventSourceWriter Log = new MyEventSourceWriter();
    
        public MyEventSourceWriter()
        {
        }
    
        public void MyEvent(string myValue1, string myValue2, string myValue3)
        {
            if (IsEnabled())
            {
                this.WriteEvent(1, myValue1, myValue2, myValue3);
            }
        }     
    }
    

    然后您可以在您的 diagnostics.wadcfgx 文件中启用此功能,如下所示:

    <EtwEventSourceProviderConfiguration scheduledTransferPeriod="PT1M" provider="MyCompany-MyProduct-MyEventSource">
        <Event id="1" eventDestination="MyEvent" />
        <DefaultEvents />
    </EtwEventSourceProviderConfiguration>
    

    然后,如果您想实际编写日志条目,您只需在代码中的任何位置执行以下操作:

    MyEventSourceWriter.Log.MyEvent("Hello", "World", "That is all.");
    

    然后,在第一次为该事件创建日志条目后(并等待适当的时间让 Azure 诊断提取日志),将创建“WADMyEvent”表,其中将包含 ActivityId 列, myValue1、myValue2 和 myValue3。

    【讨论】:

      【解决方案2】:

      很遗憾,WAD 收集的数据的格式无法修改。

      【讨论】:

      猜你喜欢
      • 2015-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-28
      • 1970-01-01
      相关资源
      最近更新 更多