Azure ServiceFabric-Beispiele melden sich nicht bei ETW an

8

Ich führe das erste Beispiel von ServiceFabric (Vorschauversion 1.4.87): Ссылка , um einen zustandsbehafteten Dienst zu erstellen, und obwohl das Beispiel korrekt ausgeführt wird, sehe ich die ETW-Ausgabeprotokollinformationen nicht im Diagnosefenster.

Die zu protokollierenden Aufrufe werden in ServiceEventSource.Current.ServiceMessage(...) ausgeführt. Wenn diese Methode (in ServiceEventSource.cs implementiert) ausgeführt wird, gibt der Aufruf von this.IsEnabled() jedoch false zurück, sodass keine Diagnose geschrieben wird. Wenn ich den IsEnabled() -Aufruf in Debug umgehen, wird immer noch nichts in das Diagnosefenster geschrieben, das nur die Startmeldungen der Anwendung enthält.

Die in der Diagnose konfigurierten Provider sind die Standard-Provider:

%Vor%

Ich habe Microsoft-ServiceFabric zu dieser Liste hinzugefügt, aber das bringt mir nur viel mehr Protokollierung, aber immer noch nicht meine Ausgabenachrichten.

Ich habe auch PerfView ausgeführt und dann, wenn ich mir die verfügbaren Provider angeschaut habe, sind die ersten beiden nicht vorhanden: Microsoft-ServiceFabric-Actors und Microsoft-ServiceFabric-Services.

Irgendeine Idee? Dies scheint entweder ein reines ETW-Problem oder eine Art ServiceFabric-Fehler beim Setup zu sein, mit möglicherweise falschen Provider-Spezifikationen im Diagnosefenster.

Ich betreibe Win10, VS2015 Enterprise x64.

[Bearbeiten] Der Aufruf ServiceEventSource.Current.ServiceTypeRegistered(Process.GetCurrentProcess().Id, typeof(MyStatefulService).Name) in Program.cs schreibt auch nichts aus. Die einzigen Nachrichten, die ich habe, sind:

%Vor%

(Wiederholen Sie dies für die anderen Knoten)

    
João Pedro 'jota' Martins 10.02.2016, 19:04
quelle

2 Antworten

14

Um Ereignisse von Ihrer EventSource zu sehen, müssen Sie ihren Namen der Liste der Anbieter im Diagnosefenster hinzufügen. Sehen Sie sich die ServiceEventSource-Definition an. Sie enthält ein Attribut [EventSource (Name="xxx")]. Das ist der Name ('xxx'), den Sie auf der Liste der Anbieter haben müssen.

Visual Studio kümmert sich normalerweise um das automatische Erkennen von EventSources in Ihrer Lösung, wenn Diagnostics Windows gestartet wird. nicht sicher, warum es nicht für Sie funktioniert, aber manuell hinzufügen sollte den Trick tun.

    
Karol Z 11.02.2016, 18:49
quelle
0

Ich bin auf dieses Problem gestoßen, nachdem ich meine Lösung neu organisiert habe. Ich habe meine Service-Projekte in einen Lösungsordner verschoben. Und das ist, wenn der Diagnose-Ereignis-Viewer keine Nachrichten von meinen Diensten mehr hat.

Nachdem die Projekte auf die Stammebene der Lösung verschoben wurden, fügt Visual Studio die Namen der Ereignisquelle automatisch zur Liste der ETW-Provider hinzu.

Dieser Fehler scheint jetzt mit VS 2017 und / oder Azure Service Fabric SDK 2.5.216.0 behoben zu sein.

    
JG in SD 21.06.2016 14:51
quelle

Tags und Links