【问题标题】:Enable azure diagnostics before/after deployment在部署之前/之后启用 azure 诊断
【发布时间】:2015-03-11 03:42:26
【问题描述】:

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

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

我尝试在部署后这样做,所以我做了什么:

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

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

我也尝试在部署之前执行此操作(我更愿意),但随后出现构建错误:Cannot load imported module named 'Diagnostics.' after I added the import in the service定义文件。

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

谢谢!

【问题讨论】:

    标签: c# azure asp.net-web-api visual-studio-2013 azure-diagnostics


    【解决方案1】:

    首先要检查的是您的配置中是否有 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 年 1 月 15 日更新: 以下是一些需要检查的额外事项:

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

    【讨论】:

    • 嗨,谢谢,是的,我做到了。但这并没有解决这个问题。
    • @L-Three 我已经更新了答案,增加了一些要测试的东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多