将 Trace 数据保存到存储在发布后无法在 Azure 中工作,但在开发环境中工作

Posted

技术标签:

【中文标题】将 Trace 数据保存到存储在发布后无法在 Azure 中工作,但在开发环境中工作【英文标题】:Saving Trace data to storage not working in Azure after publishing but working in Dev environment 【发布时间】:2014-12-08 21:10:26 【问题描述】:

这是我在 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>

使用上面的代码,我可以在从本地环境执行的天蓝色存储表上编写跟踪语句。但是发布后trace语句并没有写在azure存储表上。

【问题讨论】:

【参考方案1】:

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

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

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

    &lt;listeners&gt; 元素添加到您的 app.config 以及您的 web.config。

【讨论】:

我已经在我的 OnStart() 和 web.config 中添加了侦听器,还添加了默认侦听器,它在发布到 azure 后也会出现问题,否则它可以正常工作。无论如何,我已经通过 log4net 实现了它,感谢您的回复。

以上是关于将 Trace 数据保存到存储在发布后无法在 Azure 中工作,但在开发环境中工作的主要内容,如果未能解决你的问题,请参考以下文章

无法将数据保存到 React 中的本地存储

我无法将输入保存到数据库 Vuejs 和 Laravel

无法保存到 Dojo 中的存储

无法将值保存到核心数据

保存到云对象存储后如何将文件/文件夹注册为项目数据资产?

React - 将状态保存到本地存储