我很难将Azure WorkerRole中的跟踪日志写入本地开发存储(最终目标是Azure存储一旦部署)。我已经搜索了好几天,并继续找到很多这样的例子http://forums.asp.net/t/2041817.aspx?Azure+Getting+Trace+Data+to+Azure+Storage。不幸的是,即使该讨论与2015年3月一样,它仍然引用了一种显然不受支持的解决方案。代码行
DiagnosticMonitorConfiguration diagnosticConfiguration = DiagnosticMonitor.GetDefaultInitialConfiguration();
使用显然现已弃用的DiagnosticMonitor类。我要么不是谷歌搜索正确的东西,要么就是如何以“最新”可支持的方式配置跟踪日志的信息令人吃惊。我可以找到关于旧的“弃用”方式的大量信息。
这是我到目前为止所拥有的。我的worker角色的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 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中转到Server Explorer,将Azure节点一直扩展到Storage。转到(开发)节点,看到Tables节点下有一个包含我的跟踪日志的表,但那里什么都没有。
显然,我做错了什么,还没有找到足够清晰的文档,无论是博客还是微软,都解释了如何使其发挥作用。所以我在这里问的是什么似乎相对简单。
答案 0 :(得分:0)
您正在使用SDK版本2.5 / 2.5.1,它不支持模拟器中的诊断。请参阅此链接以了解更改:https://msdn.microsoft.com/en-us/library/azure/dn873976.aspx#BKMK_breaking。从这个链接:
Azure计算模拟器中未收集诊断日志 - For 针对Azure SDK版本2.5(Azure计算)的项目 模拟器不再支持诊断日志的收集, 包括性能计数器,基础结构日志,IIS日志和 事件日志。此外,日志不再存储在Azure存储中或 开发存储。您可以继续查看应用程序日志 Visual Studio输出窗口或计算模拟器。这只会影响 面向Azure SDK版本2.5的项目;继续的项目 目标Azure SDK 2.4不受影响。
所以,截至今天你的选择是: