.Net WCF Service de Journal de suivi avec le fichier journal de gestion (Roulement)
J'ai quelques .Net des services WCF, pour ces services, j'ai configuré l'application.fichier de configuration pour consigner les messages envoyés et reçus dans un .svclog fichier lisible par "Visionneuse de Trace de Service de l'Outil" (SvcTraceViewer.exe) . Cet outil rend les fichiers journaux joliment montrant clairement les messages SOAP en cours de traitement.
- Je utiliser le Système.Diagnostics.XmlWriterTraceListener auditeur pour formater correctement la .svclog fichier à être lues par le Service de la Visionneuse de Trace de l'Outil.
Le problème que j'ai, c'est que l' .svclog fichier devient trop grand & la Visionneuse de Trace de Service de l'Outil devient inutilisable en raison de la lenteur des temps de réponse.
La Visionneuse de Trace de Service de l'Outil permet de fournir une installation pour permettre à une partie du fichier journal doit être ouvert si le fichier > 40 MO en taille, mais c'est encore trop lent. Il semble y avoir aucun moyen de dans l'app.fichier de configuration pour configurer l' .svclog pour créer automatiquement un nouveau fichier chaque jour ou quand le fichier est à une certaine taille.
Il y a un texte de journal auditeur appelé Microsoft.VisualBasic.La journalisation.FileLogTraceListener qui prend en charge un logfilecreationschedule="Quotidien" de la propriété qui roule le fichier journal quotidien, cependant le fichier journal à partir de cet écouteur est difficile pour une opération de soutien à utiliser les entrées de journal ne sont pas bien rendus et les grands docs xml contribuer à la confusion.
Quelle est la meilleure pratique dans ce domaine, il semble que j'ai peut-être écrire une coutume WCF extension du journal qui semble exagéré pour traiter l'absence d'un fichier journal de rouleau fonction dans le construit dans le Système.Diagnostics.XmlWriterTraceListener journal auditeur /appender.
J'ai également expérimenté avec un script pour arrêter ma demande et renommer les fichiers journaux mais cela ne semble pas être possible parce que sous Windows, l'handle.exe et openfile les services publics sont incapables de fermer un fichier ouvert sur un partage réseau donc je ne peux pas renommer /déplacer l'ancien fichier journal si quelqu'un est en train de naviguer sur un partage réseau. Vais poster une autre question à ce sujet sous peu.
Grâce,
Matt.
- Si c'est faisable, vous ne sont pas censés avoir de la WCF suivi activé tout le temps. Il est conçu comme un dépannage approche, et a de l'impact sur les performances. Le désactiver dans l'environnement de production est une meilleure pratique.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez développer vous-même, ou en utiliser une déjà existante spécialisé
XmlWriterTraceListener
ou l'utilisation d'une circulaire du journal de suivi mécanisme.Il est une institution spécialisée de la mise en œuvre de la
XmlWriterTraceListener
qui effectue roulant journal de suivi sur Codeproject:http://www.codeproject.com/Articles/30956/A-Rolling-XmlWriterTraceListener
Traçage circulaire, vous avez deux fichiers qui peuvent stocker jusqu'à la moitié du total souhaité journal de suivi des données. L'auditeur crée un fichier et écrit dans ce fichier jusqu'à ce qu'il atteigne la limite de la moitié de la taille des données, à quel point elle passe à un second fichier. Lorsque l'auditeur a atteint la limite du deuxième fichier, il remplace le premier fichier avec de nouvelles traces.
http://msdn.microsoft.com/en-us/library/aa395205.aspx
J'ai bricolé un script Powershell qui modifie le nom du fichier journal dans le SVC web.config, puis créé un TaskScheduler travail pour l'exécution du script toutes les heures.
Le script suppose que vous avez quelque chose comme ceci dans votre site web.config :
Dans la Tâche lueurs de l'aube, l'Action Démarrer Un Programme, mis
Powershell.exe
dans le Programme/script boîte, puis ajouter-ExecutionPolicy ByPass c:\yourfolder\amendWebConfig.ps1
en Ajouter des arguments de la boîte.La tâche s'exécute, puis des mises à jour sur le web.config initializeData fichier, par exemple