2016-02-10 1 views
8

Je cours le tout premier exemple de ServiceFabric (Preview version 1.4.87): https://azure.microsoft.com/en-us/documentation/articles/service-fabric-create-your-first-application-in-visual-studio/, pour créer un service avec état, et bien que l'exemple fonctionne correctement, je ne vois pas le Informations de journal de sortie ETW dans la fenêtre de diagnostic.Les échantillons Azure ServiceFabric ne se connectant pas à ETW

Les appels à consigner sont effectués à ServiceEventSource.Current.ServiceMessage(...), mais lorsque cette méthode (implémentée dans ServiceEventSource.cs) s'exécute, l'appel à this.IsEnabled() renvoie la valeur false, donc aucun diagnostic n'est écrit. Si je contourne l'appel IsEnabled() dans le débogage, rien n'est encore écrit dans la fenêtre de diagnostic, qui contient uniquement les messages de démarrage de l'application.

Les fournisseurs configurés dans les diagnostics sont ceux par défaut:

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

J'ai ajouté à cette liste Microsoft-ServiceFabric, mais cela me devient beaucoup plus l'exploitation forestière, mais pas encore mes messages de sortie. J'ai également exécuté PerfView, puis en regardant les fournisseurs disponibles, les deux premiers ci-dessus ne sont pas là: Microsoft-ServiceFabric-Actors et Microsoft-ServiceFabric-Services.

Une idée? Cela semble être soit un problème purement ETW ou une sorte d'erreur ServiceFabric dans l'installation, avec peut-être des spécifications Provider incorrectes dans la fenêtre de diagnostic.

Je cours Win10, VS2015 Enterprise x64.

[Modifier] L'appel ServiceEventSource.Current.ServiceTypeRegistered(Process.GetCurrentProcess().Id, typeof(MyStatefulService).Name) à Program.cs n'écrit pas aussi quoi que ce soit. Les seuls messages que j'ai sont:

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. 

(répéter pour les autres noeuds)

+2

Avez-vous déjà trouvé comment les rendre visibles dans PerfView? Moi aussi j'ai ce problème dans cette application. –

Répondre

14

Pour voir les événements de votre EventSource vous devez ajouter son nom à la liste des fournisseurs dans la fenêtre de diagnostic. Regardez la définition de ServiceEventSource, elle aura un attribut [EventSource (Name = "xxx")]. C'est le nom ('xxx'), vous devez être sur la liste des fournisseurs. Visual Studio prend généralement soin de détecter automatiquement les sources d'événements dans votre solution lors du lancement de Diagnostics Windows; Je ne sais pas pourquoi cela ne fonctionne pas pour vous, mais l'ajouter manuellement devrait faire l'affaire.

+0

Merci, c'était tout. Je suppose que c'est un bug lié au SDK 2.8.2. Je l'ai essayé dans un autre PC avec 2.8.1 et le fournisseur est ajouté correctement dans Visual Studio. –

+0

Assurez-vous que les noms des sources d'événements sont répertoriés dans la liste des fournisseurs comme indiqué ici lors de l'écoute des événements ETW d'une application de structure de service hébergée Azure - [Utilisation de Visual Studio pour écouter les événements ETW Azure Service Fabric] (https: // .microsoft.com/fr-fr/documentation/articles/service-fabric-diagnostics-comment-surveiller-et-diagnostiquer-services-localement/# comment-2638038977) –

+0

En plus d'ajouter manuellement notre propre fournisseur ETW, nous fermer l'onglet Diagnostic Events qui est ouvert par le débogueur, puis en ouvrir un nouveau dans le menu Windows, puis entrer le (s) fournisseur (s) ETW. –

0

J'ai rencontré ce problème après avoir réorganisé ma solution. J'ai déplacé mes projets de service dans un dossier de solution. Et c'est à ce moment-là que Diagnostics Events Viewer a cessé d'avoir des messages de mes services. Après avoir ramené les projets au niveau racine de la solution, Visual Studio ajoute automatiquement les noms des sources d'événements à la liste des fournisseurs ETW.

Ce bogue semble maintenant être corrigé avec VS 2017 et/ou Azure Service Fabric SDK 2.5.216.0.