2016-02-10 9 views
8

ServiceFabric(プレビューバージョン1.4.87)の最初のサンプル:https://azure.microsoft.com/en-us/documentation/articles/service-fabric-create-your-first-application-in-visual-studio/を実行して、ステートフルサービスを作成していますが、サンプルは正常に動作していますが、 ETWは、診断ウィンドウにログ情報を出力します。ログインするAzure ServiceFabricサンプルがETWにログを記録しない

呼び出しがありませんので、診断が書かれていないServiceEventSource.Current.ServiceMessage(...)に行われたが、(ServiceEventSource.csで実装)このメソッドは、実行時に、this.IsEnabled()戻っへの呼び出しはfalseをされています。 IsEnabled()コールをデバッグでバイパスしても、アプリケーションの起動メッセージだけを含む診断ウィンドウには何も書き込まれません。診断で設定

プロバイダはデフォルトのものです:

Microsoft-ServiceFabric-Actors 
Microsoft-ServiceFabric-Services 
cbd93bc2-71e5-4566-b3a7-595d8eeca6e8:5:0x4000000000000000 

私はこのリストにマイクロソフト-ServiceFabricを追加しましたが、これはちょうど私はるかにログが、まだありません、私の出力メッセージを取得します。

また、PerfViewを実行した後、使用可能なプロバイダを調べると、上記の最初の2つは存在しません。Microsoft-ServiceFabric-ActorsとMicrosoft-ServiceFabric-Services。

これは純粋なETWの問題かセットアップ中のServiceFabricエラーのいずれかと思われます。おそらく診断ウィンドウのProviderスペックが間違っています。

私はWin10、VS2015 Enterprise x64を実行しています。

[編集] Program.csのServiceEventSource.Current.ServiceTypeRegistered(Process.GetCurrentProcess().Id, typeof(MyStatefulService).Name)コールでも何も書き込まれません。私が持っている唯一のメッセージは以下のとおりです。

Service Created: Service fabric:/MyApplication/MyStatefulService partition 9505f2b3-dee5-4ea7-96b7-c861407b5283 of ServiceType MyStatefulServiceType created in Application fabric:/MyApplication ApplicationType MyApplicationType. 

RunAsync has been invoked for a stateful service replica. Application Type Name: MyApplicationType, Application Name: fabric:/MyApplication, Service Type Name: MyStatefulServiceType, Service Name: fabric:/MyApplication/MyStatefulService, Partition Id: 9505f2b3-dee5-4ea7-96b7-c861407b5283, Replica Id: 130996049833056865", 

The Resource Balancer completed the Creation phase and consequently issued the action -- Add on Service -- fabric:/MyApplication/MyStatefulService Partition -- 9505f2b3-dee5-4ea7-96b7-c861407b5283 with (if relevant) SourceNode -- N/A and TargetNode -- Node.2. 

(他のノードのために繰り返す)

+2

PerfViewでそれらを表示する方法を理解しましたか?私もそのアプリケーションでその問題を抱えています。 –

答えて

14

あなたが診断ウィンドウ内のプロバイダのリストに名前を追加する必要があり、あなたのEventSourceからイベントを表示するには。 ServiceEventSourceの定義を見ると、それに[EventSource(Name = "xxx")]属性があります。これはプロバイダのリストに登録する必要がある名前( 'xxx')です。

Diagnostics Windowsを起動すると、Visual Studioは通常、ソリューション内のEventSourcesを自動的に検出します。なぜそれがあなたのために働いていないのか分からないが、手動で追加することはそのトリックを行うべきである。

+0

ありがとうございました。 2.8.2 SDKに関連するバグだと思う。 2.8.1の別のPCで試してみましたが、プロバイダはVisual Studioに正しく追加されています。 –

+0

はアズールからETWイベントを聴いたときに、ここで提案されるようにイベントソース名はプロバイダのリストに表示されていることを確認し、サービス・ファブリック・アプリケーションをホストされている - (HTTPS [AzureのサービスファブリックETWイベントを聴くには、Visual Studioを使用]://紺碧.microsoft.com/EN-US /文書/記事/サービス・ファブリック・診断・ハウツー・モニター・アンド・診断・サービス - ローカル/#コメント-2638038977) –

+0

手動で私たち自身のETWプロバイダを追加することに加えて、我々その後、デバッガで開かれた診断イベント]タブを閉じ、Windowsのメニューから新しいものを開き、ETWプロバイダ(複数可)を入力する必要があります。 –

0

ソリューションを再編成した後、この問題が発生しました。サービスプロジェクトをソリューションフォルダに移動しました。診断イベントビューアがサービスからのメッセージを停止したときです。

プロジェクトをソリューションのルートレベルに戻した後、Visual Studioは自動的にイベントソース名をETWプロバイダのリストに追加します。

このバグは、VS 2017および/またはAzure Service Fabric SDK 2.5.216.0で修正されているようです。

関連する問題