将跟踪数据保存到存储中发布后不在Azure中工作,但在开发人员环境中工作

本文关键字:工作 Azure 开发 环境 保存 数据 跟踪 存储 | 更新日期: 2023-09-27 18:26:34

这是我在WebRole OnStart方法中使用的代码:

var config = DiagnosticMonitor.GetDefaultInitialConfiguration();
                DiagnosticMonitorTraceListener tmp = new DiagnosticMonitorTraceListener();
                System.Diagnostics.Trace.Listeners.Add(tmp);
                //config.Logs.BufferQuotaInMB = 200;
                config.Logs.ScheduledTransferPeriod = TimeSpan.FromSeconds(30.0);
                DiagnosticMonitor.Start("Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString", config);
                System.Diagnostics.Trace.Write("Test");

0这是我在web.config中的配置:

    <trace>
      <listeners>
        <add type="Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener, Microsoft.WindowsAzure.Diagnostics, Version=2.3.0.0, Culture=neutral, PublicKeyToken=xxxx"
          name="AzureDiagnostics">
          <filter type="" />
        </add>
      </listeners>
    </trace>

使用上面的代码,我能够在azure存储表上编写从本地环境执行的跟踪语句。但是在发布之后,跟踪语句不会写入azure存储表

将跟踪数据保存到存储中发布后不在Azure中工作,但在开发人员环境中工作

这是因为您的OnStart方法在WaIISHost.exe中运行,而web.config正在配置w3wp.exe。这意味着您的OnStart代码没有定义跟踪侦听器。您可以搜索"DiagnosticMonitorTraceListener OnStart"并找到几个解决方案。一般来说,选项包括:

  1. 将以下代码添加到您的OnStart:

    System.Diagnostics.Trace.Listeners.Add(new Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener());

  2. 除了web.config之外,还将<listeners>元素添加到app.config中。