2009-12-10 5 views
0

Je développe un service Web ASMX à temps critique et j'utilise actuellement sa propre classe avec des méthodes statiques pour écrire des lignes dans un fichier journal partagé. La journalisation n'est pas surveillée par les verrous/moniteurs, car l'application écrit beaucoup de journaux. Je ne sais pas ce qui se passe si un thread est programmé lors de l'écriture statique d'une ligne et qu'un autre thread programmé écrit aussi. Maintenant, je demande quelle est la meilleure façon d'implémenter la journalisation?Comment implémenter la journalisation dans une application Web ASP.NET multithread (service Web asmx)

Merci - matti

+0

Cela dépend de la version de .NET et Windows que vous utilisez. Quelles versions utilisez-vous? –

Répondre

0

Je suis d'accord avec @AdaTheDev. En utilisant log4net, vous pouvez créer un client Appender (la pièce qui prend un message enregistré et le livre à une destination, comme un fichier, un courrier électronique, un journal des événements, etc.). Cet appender pourrait écrire les messages de journal à MSMQ.

Vous pouvez alors avoir un petit composant qui lit la file d'attente (thread unique) et écrit les messages dans un fichier journal. Cela signifierait que pour consigner un message, il ne faudrait que le temps nécessaire pour afficher le message du journal et l'écrire dans la file d'attente. L'acte d'écrire les messages dans le fichier serait un thread unique et complètement découplé de votre code d'entreprise critique sur le côté ASP.NET des choses.

0

Id vous recommandons d'utiliser une solution tierce comme log4net ou NLog au lieu de le faire vous-même TBH, permet d'économiser de réinventer la roue

0

La mise en œuvre que nous avons choisi est d'utiliser Microsoft Enterprise Library Logging Block, puis nous avons une classe qui a quelques configurations de méthodes statiques simplifiées que nous appelons qui écrivent réellement le message de journal sur le fichier journal. Nous n'avons eu aucun problème avec l'utilisation de ceci dans notre environnement multithread.

Questions connexes