跟踪来自网站的消息未显示在Azure诊断中

时间:2015-06-24 14:38:36

标签: azure azure-diagnostics

我有一个部署为Azure网站的API(不是工作者角色)。该站点的代码中包含Trace语句,我希望通过Azure诊断程序在Azure表中捕获这些语句。

我正在使用Trace.TraceErrorTrace.TraceInformation

我已按照此处的说明操作,基本上说只需要在管理门户中轻拂开关并设置应用程序诊断的位置:https://azure.microsoft.com/en-us/documentation/articles/web-sites-enable-diagnostic-log/

我已确保将Microsoft.WindowsAzure.Diagnostics引用添加到项目中,并且我还尝试将以下内容添加到Web.config中(即使说明没有说明这是必要的):

<system.diagnostics>
  <trace autoflush="true" indentsize="4" >
    <listeners>
      <add type="Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener, Microsoft.WindowsAzure.Diagnostics, Version=2.6.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" name="AzureDiagnostics" />
    </listeners>
  </trace>
</system.diagnostics>

尽管如此,我获得Azure Blob和/或表(我在门户网站中指定)的唯一输出如下:

24/06/2015 14:02:49 AlasdairOTCDev  Verbose SnapshotHelper::RestoreSnapshotInternal SUCCESS - process   11284   -1
24/06/2015 14:02:48 AlasdairOTCDev  Verbose SnapshotHelper::RestoreSnapshotInternal SUCCESS - File.Copy 11284   -1

门户网站中的跟踪级别设置为Verbose

我做错了什么,如何调试呢?

非常感谢任何可以提供的帮助,因为我快速耗尽头发......

3 个答案:

答案 0 :(得分:2)

事实证明问题的根源在于我们的构建。

我们的构建脚本没有编译TRACE符号。在本地编译的构建包括这个(这就是为什么它们似乎都在本地工作),但是当我们构建并部署到Azure时,它被错过了。

没有TRACE符号,没有激活任何记录语句。

答案 1 :(得分:1)

您不需要在项目中引用 Microsoft.WindowsAzure.Diagnostics 。这适用于云服务,您引用的文章没有提到它,因为它适用于Azure Web Apps(以前称为Websites)。

假设您使用的是Azure Web App(不是云服务Web角色),那么如果要配置Web应用程序以将应用程序诊断存储到一个,则必须使用https://manage.windowsazure.com处的当前Azure管理门户。 Azure存储表或Azure存储Blob容器。在Web应用程序的配置页面中,对于表存储,您的配置应如下所示 enter image description here

(目前,https://portal.azure.com的预览门户只允许您使用Web应用程序的文件系统配置应用程序诊断日志记录)

答案 2 :(得分:0)

对于仍然遇到此问题的任何人,除了获得本页上给出的出色答案(启用Azure跟踪,并确保在构建中将TRACE设置为true)之外,还请确保您确实清除了跟踪记录!

在您的代码中,您需要这样的内容:

System.Diagnostics.Trace.TraceError("Can you see me?");
System.Diagnostics.Trace.Flush();

System.Diagnostics.Trace.AutoFlush = true;
System.Diagnostics.Trace.TraceError("Can you see me?");