2017-05-25 6 views
3

サービスファブリックWeb APIプロジェクトでいくつかのロギングを試みていますが、常に無効になっています。これまで他のSFプロジェクトタイプではこのような振る舞いは見たことがありません。サービスファブリックWeb APIプロジェクトでServiceEventSourceが無効にされました

[NonEvent] 
    public void ServiceMessage(ServiceContext serviceContext, string message, params object[] args) 
    { 
     if (IsEnabled()) 
     { 
      string finalMessage = string.Format(message, args); 

      ServiceMessage(
       serviceContext.ServiceName.ToString(), 
       serviceContext.ServiceTypeName, 
       GetReplicaOrInstanceId(serviceContext), 
       serviceContext.PartitionId, 
       serviceContext.CodePackageActivationContext.ApplicationName, 
       serviceContext.CodePackageActivationContext.ApplicationTypeName, 
       serviceContext.NodeContext.NodeName, 
       finalMessage); 
     } 
    } 

IsEnabledは常にfalseを返します。 Web APIプロジェクトに必要な特別な設定はありますか?これは.netコアでもあります。それが影響しているかどうかはわかりません。

+0

ない(診断イベント - - 他のWindowsのビュー)次に、あなたはタブ診断イベントにETWプロバイダとしてこの名前を追加する必要があります。 EventSourceクラスを変更しましたか? –

+0

EventSource属性の名前文字列を除き、完全に変更されていません。しかし、私はすべての私のService Fabricプロジェクトでそれを変更します。この.net core web api SFプロジェクトは、私が今までにこの動作を見た唯一の時間です。私のスタートアップやウェブリスナーが作成されているときなどに、何かが欠けているような気がします。 –

+0

あなたはこれに何の名前を付けましたか?私のWeb APIのステートレスサービスの1つを見ると、設定が必要なので、それ以上の質問は必要ありません。多分それは無効なものか何かです。 –

答えて

1

SFプロジェクトタイプに依存しません。それはMyCompanyの-SFApp-Stateful1である。この場合、

[EventSource(Name = "MyCompany-SFApp-Stateful1")] 
internal sealed class ServiceEventSource : EventSource 

:あなたのEventSourceの名前を見つけます。私が知っていることenter image description here

+0

コードをステップ実行していて、IsEnabledを呼び出すとfalseが返されます。ベースのEventSourceクラスからのものです。したがって、ETWメッセージがすべて作成されることはありません。 –

+0

@ g.t.w.d \t イベントソースを有効にしてプロバイダに追加する必要があるためです。あなたはそれをやりました?追加します。 Apply(適用)を押して再構築します。その後、IsEnabledがtrueになる – Marusyk

+0

私は試してみる。私はそれまで他のSFプロジェクトタイプでこれまでにこれを行う必要はありませんでした。 –

関連する問題