【发布时间】:2015-06-17 23:56:53
【问题描述】:
在写入本地开发存储的 Azure WorkerRole 中获取跟踪日志时遇到很多困难(最终目标是部署后的 Azure 存储)。我已经用谷歌搜索了好几天,并不断找到很多像 http://forums.asp.net/t/2041817.aspx?Azure+Getting+Trace+Data+to+Azure+Storage 这样的例子。不幸的是,尽管该讨论是在 2015 年 3 月才进行的,但它仍然引用了一个显然不受支持的解决方案。代码行
DiagnosticMonitorConfiguration diagnosticConfiguration = DiagnosticMonitor.GetDefaultInitialConfiguration();
使用现在显然已弃用的 DiagnosticMonitor 类。我要么没有在谷歌上搜索正确的东西,要么非常缺乏关于如何以“最新”可支持方式配置跟踪日志的信息。我可以找到大量关于旧的“已弃用”方式的信息。
这是我目前所拥有的。我的工作角色的 app.config 定义了这个部分:
<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>
事实上,这是由创建 WorkerRole 的模板自动添加的。我没有手动对该部分进行任何操作。
ServiceConfiguration.csdef 中的 WorkerRole 部分如下所示:
<WorkerRole name="Processor" vmsize="Small">
<ConfigurationSettings>
<Setting name="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString" />
</ConfigurationSettings>
</WorkerRole>
ServiceConfiguration.Local.cscfg 中相关的 Role 部分如下所示:
<Role name="Processor">
<Instances count="1" />
<ConfigurationSettings>
<Setting name="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString" value="UseDevelopmentStorage=true" />
</ConfigurationSettings>
</Role>
然后我的 WorkerRole 项目中的一个类中有一个 Trace 语句,如下所示:
Trace.TraceInformation("Handling event");
与云项目中的 WorkerRole 关联的 diagnostics.wadcfgx 如下所示:
<?xml version="1.0" encoding="utf-8"?>
<DiagnosticsConfiguration xmlns="http://schemas.microsoft.com/ServiceHosting/2010/10/DiagnosticsConfiguration">
<PublicConfig xmlns="http://schemas.microsoft.com/ServiceHosting/2010/10/DiagnosticsConfiguration">
<WadCfg>
<DiagnosticMonitorConfiguration overallQuotaInMB="4096">
<DiagnosticInfrastructureLogs scheduledTransferLogLevelFilter="Verbose" />
<Directories scheduledTransferPeriod="PT1M">
<IISLogs containerName="wad-iis-logfiles" />
<FailedRequestLogs containerName="wad-failedrequestlogs" />
</Directories>
<PerformanceCounters scheduledTransferPeriod="PT1M">
<PerformanceCounterConfiguration counterSpecifier="\Memory\Available MBytes" sampleRate="PT3M" />
<PerformanceCounterConfiguration counterSpecifier="\Web Service(_Total)\ISAPI Extension Requests/sec" sampleRate="PT3M" />
<PerformanceCounterConfiguration counterSpecifier="\Web Service(_Total)\Bytes Total/Sec" sampleRate="PT3M" />
<PerformanceCounterConfiguration counterSpecifier="\ASP.NET Applications(__Total__)\Requests/Sec" sampleRate="PT3M" />
<PerformanceCounterConfiguration counterSpecifier="\ASP.NET Applications(__Total__)\Errors Total/Sec" sampleRate="PT3M" />
<PerformanceCounterConfiguration counterSpecifier="\ASP.NET\Requests Queued" sampleRate="PT3M" />
<PerformanceCounterConfiguration counterSpecifier="\ASP.NET\Requests Rejected" sampleRate="PT3M" />
<PerformanceCounterConfiguration counterSpecifier="\Processor(_Total)\% Processor Time" sampleRate="PT3M" />
</PerformanceCounters>
<WindowsEventLog scheduledTransferPeriod="PT1M">
<DataSource name="Application!*" />
</WindowsEventLog>
<CrashDumps dumpType="Full">
<CrashDumpConfiguration processName="WaAppAgent.exe" />
<CrashDumpConfiguration processName="WaIISHost.exe" />
<CrashDumpConfiguration processName="WindowsAzureGuestAgent.exe" />
<CrashDumpConfiguration processName="WaWorkerHost.exe" />
<CrashDumpConfiguration processName="DiagnosticsAgent.exe" />
<CrashDumpConfiguration processName="w3wp.exe" />
</CrashDumps>
<Logs scheduledTransferPeriod="PT1M" scheduledTransferLogLevelFilter="Verbose" />
</DiagnosticMonitorConfiguration>
</WadCfg>
<StorageAccount>teststorage</StorageAccount>
</PublicConfig>
<PrivateConfig xmlns="http://schemas.microsoft.com/ServiceHosting/2010/10/DiagnosticsConfiguration">
<StorageAccount name="teststorage" endpoint="https://core.windows.net/" />
</PrivateConfig>
<IsEnabled>true</IsEnabled>
</DiagnosticsConfiguration>
当我在 Visual Studio 中运行应用程序时,Azure 存储和计算模拟器已成功启动。有了所有这些,我希望转到 Visual Studio 中的服务器资源管理器,将 Azure 节点一直扩展到存储。进入(Development)节点,看到Tables节点下有一个表,里面有我的trace日志,但是里面什么都没有。
很明显,我做错了什么,还没有找到足够清晰的文档,无论是博客还是微软,都可以解释如何让它工作。所以在这里我要问的是什么似乎相对简单。
【问题讨论】:
标签: c# azure visual-studio-2013 azure-storage azure-worker-roles