2013-05-02 43 views
2

Scottgu记录刚刚宣布2.0 SDK: http://weblogs.asp.net/scottgu/archive/2013/04/30/announcing-the-release-of-windows-azure-sdk-2-0-for-net.aspxRoleEntryPoint跟踪调用不被使用2.0 Azure的SDK云服务

我试图创建一个新的MVC4网站。将其添加到云项目,并按预期包含以下诊断设置。

<system.diagnostics> 
    <trace> 
     <listeners> 
     <add type="Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener, Microsoft.WindowsAzure.Diagnostics, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 
      name="AzureDiagnostics"> 
      <filter type="" /> 
     </add> 
     </listeners> 
    </trace> 
    </system.diagnostics> 

据: https://www.windowsazure.com/en-us/develop/net/common-tasks/diagnostics/ 在Windows Azure日志上的默认和

从您的代码发送到跟踪侦听日志跟踪消息(迹 监听器必须添加到网页.config或app.config文件)。日志数据 将以调度传输周期传输间隔传输到 存储表WADLogsTable。

的diagnostic.wadcfg:

<?xml version="1.0" encoding="utf-8"?> 
<DiagnosticMonitorConfiguration configurationChangePollInterval="PT1M" overallQuotaInMB="4096" xmlns="http://schemas.microsoft.com/ServiceHosting/2010/10/DiagnosticsConfiguration"> 
    <DiagnosticInfrastructureLogs /> 
    <Directories> 
    <IISLogs container="wad-iis-logfiles" /> 
    <CrashDumps container="wad-crash-dumps" /> 
    </Directories> 
    <Logs bufferQuotaInMB="1024" scheduledTransferPeriod="PT1M" scheduledTransferLogLevelFilter="Verbose" /> 
    <WindowsEventLog bufferQuotaInMB="1024" scheduledTransferPeriod="PT1M" scheduledTransferLogLevelFilter="Error"> 
    <DataSource name="Application!*" /> 
    </WindowsEventLog> 
</DiagnosticMonitorConfiguration> 

我放在我的两个global.cs一个Trace.TraceError和webrole.cs启动方法,我也只能从global.cs之一。

我错过了什么,或者它不应该为WebRole工作吗?

回答

7

WebRole.cs运行在与应用程序本身不同的进程中,并且您的web.config不会影响它。

尝试在代码中手动设置Trace Listeners

Trace.Listeners.Add(new Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener()); 

或使用的解决方案,从here

从RoleEntryPoint读取配置文件,您的网站: 即使首选方式在Windows Azure中存储配置 应用程序在ServiceConfiguration.cscfg文件中,还有 还有很多情况当你可能想使用一个普通的.NET配置文件 - ,特别是在配置.NET系统组件或可重用的 框架时。特别是无论何时使用Windows Azure诊断程序 ,都需要在.NET 配置文件中配置DiagnosticMonitorTraceListener。

当您创建Web角色项目时,Visual Studio将为您的.NET配置创建一个 web.config文件。虽然您的网络 应用程序可以访问此信息,但您的RoleEntryPoint代码 不能 - 因为它不作为网站的一部分运行。由于前面提到的 ,它在一个名为WaIISHost.exe的进程下运行,所以它 预计它的配置位于名为WaIISHost.exe.config的文件中。 因此,如果您在您的web项目 中使用此名称创建一个文件,并将“复制到输出目录”属性设置为“始终复制” ,您会发现RoleEntryPoint可以愉快地阅读此内容。这是我能想到的唯一情况的一个 ,您将在同一个项目中拥有两个.NET 配置文件!

+0

谢谢。我曾希望它以某种方式包含在SDK2.0中的这个更新中。添加监听器我自己的工作方式如下所示。但我不能在服务器资源管理器中的新“查看诊断数据”条目中看到visual studio中的信息。它过滤日志以仅显示来自应用程序的内容,而不是卷轴。 (我可以在表格存储中找到条目,但需要一个3方工具以友好的方式查看它)。 – 2013-05-02 11:06:28

+0

Nvm,它似乎也在视觉工作室也用于查看来自卷轴的痕迹。 – 2013-05-02 11:16:08

+0

这个upvote实际上是100万upvotes。 Trace.Listeners.Add()完成这项工作。这是对这个问题一天之后我的头撞墙的最简单的解释;谢谢! – user1454265 2014-05-28 14:48:34