在部署之前/之后启用 Azure 诊断
本文关键字:启用 Azure 诊断 之后 部署 | 更新日期: 2023-09-27 18:37:15
我想在我的 Web 角色(一个用 C# 编写的 Web API)中启用诊断。
如果我理解正确,这可以在部署之前通过在云项目中启用它来完成,或者在部署后通过使用服务器资源管理器进行配置来完成。
我试图在部署后执行此操作,所以我做了:
- 在 Web API 中使用 System.Diagnostics.Trace 来记录信息和错误。
- 保留云项目中的默认设置(未选中"启用诊断"复选框)。
- 已将 Web API 部署到 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更新:以下是一些要检查的其他事项:
- 尝试将一个简单的 TextWriterTraceListener 添加到应用程序的配置中文件。 如果日志未写入跟踪文件那么你就知道问题不是 WAD 问题,而是一般跟踪问题(可能是以下两个问题之一)。 看http://msdn.microsoft.com/en-us/library/sk36c28t.aspx 设置文本侦听器。 确保元素具有 .
- 确保您使用的是 Diagnostics.Trace.TraceXXX 而不是 Diagnostics.Debug.WriteXXX。调试语句将从发布版本中删除。
- 确保编译的代码实际上具有诊断。跟踪行(使用反射器或 ildasm 进行验证)。 诊断。跟踪命令是从编译的二进制文件中删除,除非您使用 TRACE。条件编译符号。 如果使用 msbuild 构建项目那么这是一个常见的问题。