将跟踪数据保存到存储中发布后不在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存储表
这是因为您的OnStart方法在WaIISHost.exe中运行,而web.config正在配置w3wp.exe。这意味着您的OnStart代码没有定义跟踪侦听器。您可以搜索"DiagnosticMonitorTraceListener OnStart"并找到几个解决方案。一般来说,选项包括:
-
将以下代码添加到您的OnStart:
System.Diagnostics.Trace.Listeners.Add(new Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener());
-
除了web.config之外,还将
<listeners>
元素添加到app.config中。