来自网站的跟踪消息未出现在 Azure 诊断中

Trace messages from Website not appearing in Azure Diagnostics

我有一个 API 部署为 Azure 网站(不是辅助角色)。该站点的代码中点缀着 Trace 语句,我想通过 Azure Diagnostics 在 Azure Table 中捕获这些语句。

我正在使用 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 and/or Table(我在门户中指定的)的唯一输出如下:

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

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

非常感谢您提供的任何帮助,因为我很快 运行 没头发了……

您不需要在您的项目中引用 Microsoft.WindowsAzure.Diagnostics。那是针对云服务的,您引用的文章没有提到它,因为它是针对 Azure Web 应用程序(以前称为网站)的。

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

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

原来问题的根源出在我们的构建上。

存在一个问题,我们的构建脚本没有编译 TRACE 符号。在本地编译的构建确实包括这个(这就是为什么它看起来都在本地工作)但是当我们构建并部署到 Azure 时它被遗漏了。

没有 TRACE 符号,none 个日志语句被激活。

对于仍然遇到此问题的任何人,除了此页面上给出的出色答案(在 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?");