这是我在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>
&#13;
使用Above Code我可以在从我的本地环境执行的azure存储表上编写跟踪语句。但在发布后,跟踪语句不会写在azure存储表中。
答案 0 :(得分:1)
这是因为您的OnStart方法在WaIISHost.exe中运行,而您的web.config正在配置w3wp.exe。这意味着您的OnStart代码没有定义跟踪侦听器。您可以搜索&Diagn; DiagnosticMonitorTraceListener OnStart&#39;并找到几个解决方案。一般来说,选项是:
将以下代码添加到OnStart:
System.Diagnostics.Trace.Listeners.Add(new Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener());
除了web.config之外,还将<listeners>
元素添加到app.config。