2017-05-25 72 views
3

我正在嘗試在我的服務結構web api項目上執行一些日誌記錄,並且它始終處於禁用狀態。我從來沒有見過這種行爲以前的任何其他SF項目類型。ServiceEventSource在Service Fabric Web API項目中禁用

[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

這並不是說我知道。你有沒有對EventSource類進行任何修改? –

+0

除了EventSource屬性名稱字符串以外,完全沒有任何變化。但是我改變了我所有的服務結構項目。這個.net core web api SF項目是我見過這種行爲的唯一時間。我覺得我可能會在我的創業中失去一些東西,或者當我的weblistener正在被創建或者某些事情發生時。 –

+0

你給這個名字叫什麼名字?看看我自己的一個web api無狀態服務,沒有任何設置要求,因此這個問題。也許這是一個無效的東西。 –

回答

1

它不取決於SF項目類型。找出你的EventSource名稱:

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

在這種情況下,它是MyCompany的-SFApp-Stateful1。然後,你需要這個名字在診斷活動選項卡中添加的ETW提供商(視圖 - 其他的Windows - 診斷活動

enter image description here

+0

我正在逐步完成代碼,並且對IsEnabled的調用返回false。哪個來自基本的EventSource類。所以沒有任何ETW消息被創建。 –

+0

@ g.t.w.d \t 這是因爲您需要啓用事件源,將其添加到提供程序。是你做的嗎?加。按應用並重建。之後,IsEnabled將是真的 – Marusyk

+0

我會盡力。我從來沒有這樣做過任何其他的SF項目類型。 –

相關問題