我有一个部署为Azure网站的API(不是工作者角色)。该站点的代码中包含Trace语句,我希望通过Azure诊断程序在Azure表中捕获这些语句。
我正在使用Trace.TraceError
,Trace.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
。
我做错了什么,如何调试呢?
非常感谢任何可以提供的帮助,因为我快速耗尽头发......
答案 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应用程序的配置页面中,对于表存储,您的配置应如下所示
(目前,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?");