2013-10-30 70 views
1

在我的成分,我已經從EventSource類派生創建ETW事件的幾個來源:在Azure角色中如何啓用自定義ETW事件?

[EventSource] 
public class MessagingTrace : EventSource 
{ 
    [Event(1)] 
    public void MessageReceived(string address) 
    { 
     this.WriteEvent(1, address); 
    } 
} 

我試圖按照文章上Enabling Diagnostics in Windows Azure,但我不能找到如何任何指導配置Azure診斷以從我自己的來源捕獲事件。

雖然我知道該選項在那裏,但我寧願不通過舊的.NET跟蹤路由我的事件,因爲只能在部署時進行配置。

有沒有辦法讓Azure診斷程序提取我的事件?

回答

2

Azure診斷不適用於ETW事件!

Azure診斷工作與:

  • Windows事件日誌事件
  • .NET Trace
  • IIS日誌文件
  • Windows性能計數器
  • 自定義日誌文件

所有這一切,與...非常不同ETW(Event Tracing for Windows)! ETW內置於Windows本身,而不是.NET Framework。而Windows Azure診斷模塊沒有內置支持來從ETW讀取事件。但是,您可以創建ETW跟蹤日誌文件,並使Azure診斷程序將這些日誌作爲常規「日誌」文件傳輸到存儲中。

您可以閱讀有關如何在Windows Azure診斷here中使用ETW跟蹤日誌文件的更多信息。

您可能還想看看Semantic Logging Application Block from the Enterprise Library 6。此塊使用EventSource並具有用於Windows Azure表存儲的接收器。

+0

考慮到像WAD這樣的文章建立在ETW上(http://blogs.msdn.com/b/davidhardin/archive/2011/02/26/wad-is-built-on-etw.aspx),我是由於它不支持ETW的想法讓人有些失望。 –

+0

的確如此,但還是明智的想法。它建立在ETW上以支持高吞吐量 - 記住WAD可以監控很多事情,它絕對需要高速記錄機制。至於爲什麼它不直接支持ETW。我的猜測只是用ETW很容易生成的數據量。 ETW可以幾分鐘生成700MB的跟蹤文件。 WAD必須確保它所記錄的所有內容都保存在存儲中。想象一下,現在我的部署有10個實例,每個實例都在執行重型ETW,部署和部署,並且mr.X部署... – astaykov

+0

我只需要根據http://www.iconstructions.be寫我自己的接收器/ blog/instrument-webrole-with-etw-eventsource-using-windows-azure-diagnostics –

1

Azure現在支持ETW日誌記錄。要啓用它,請在Server Explorer中右鍵單擊該角色並編輯診斷配置,應該有ETW日誌的選項卡,您可以在其中啓用它們。有一個Channel9視頻,詳細解釋它。

相關問題