2013-05-02 78 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