在部署之前/之后启用 Azure 诊断

本文关键字:启用 Azure 诊断 之后 部署 | 更新日期: 2023-09-27 18:37:15

我想在我的 Web 角色(一个用 C# 编写的 Web API)中启用诊断。

如果我理解正确,这可以在部署之前通过在云项目中启用它来完成,或者在部署通过使用服务器资源管理器进行配置来完成。

我试图在部署后执行此操作,所以我做了:

  1. 在 Web API 中使用 System.Diagnostics.Trace 来记录信息和错误。
  2. 保留云项目中的默认设置(未选中"启用诊断"复选框)。
  3. 已将 Web API 部署到 Azure。
  4. 使用服务器资源管理器配置诊断(启用应用程序日志的传输)。

问题是,如果我在服务器资源管理器中执行"查看诊断数据",则看不到应用程序日志中出现的跟踪信息。

我也尝试在部署之前执行此操作(我更喜欢),但随后出现构建错误:在服务定义文件中添加导入后,无法加载名为"诊断"的导入模块。

我可能忘记了什么,但是什么?

谢谢!

在部署之前/之后启用 Azure 诊断

首先要检查的是您的配置中是否有 2.5 版本的 DiagnosticMonitorTraceListener:

  <system.diagnostics>
    <trace>
      <listeners>
        <add type="Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener, Microsoft.WindowsAzure.Diagnostics, Version=2.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
          name="AzureDiagnostics">
          <filter type="" />
        </add>
      </listeners>
    </trace>
  </system.diagnostics>

2015-01-15更新:以下是一些要检查的其他事项:

  1. 尝试将一个简单的 TextWriterTraceListener 添加到应用程序的配置中文件。 如果日志未写入跟踪文件那么你就知道问题不是 WAD 问题,而是一般跟踪问题(可能是以下两个问题之一)。 看http://msdn.microsoft.com/en-us/library/sk36c28t.aspx 设置文本侦听器。 确保元素具有 .
  2. 确保您使用的是 Diagnostics.Trace.TraceXXX 而不是 Diagnostics.Debug.WriteXXX。调试语句将从发布版本中删除。
  3. 确保编译的代码实际上具有诊断。跟踪行(使用反射器或 ildasm 进行验证)。 诊断。跟踪命令是从编译的二进制文件中删除,除非您使用 TRACE。条件编译符号。 如果使用 msbuild 构建项目那么这是一个常见的问题。