2008-11-20 3 views
0

Nous avons un ensemble de services Web qui est également notre API interne. Ils partagent parfaitement un fichier web.config commun.Un fichier journal et un gestionnaire d'erreurs pour l'ensemble des services Web - possible?

Existe-t-il un moyen de faire en sorte que log4net crée un journal pour l'ensemble du site, pour chacun d'entre eux? Et avoir un gestionnaire d'erreur commun? Le problème, je pense qu'ils sont tous des répertoires virtuels séparés, des applications distinctes ...? Mais encore une fois ... ils partagent le même fichier web.config et ça marche bien ... peuvent-ils partager en quelque sorte global.asax ou quoi que ce soit? Je n'arrive pas à le faire fonctionner ...

Merci pour toute aide.

Répondre

0

Sont-ils tous dans le même projet? Sont-ils des services ASMX? Si c'est le cas et vous pouvez les mettre dans le même répertoire virtuel, il ne devrait pas y avoir de problème.

+0

@Mitchel Vendeurs: Oui, ils sont tous ASMX, mais ils sont tous dans des projets différents. Les fusionner est l'une des solutions mais cela prendra plus de temps ... – badbadboy

1

De FAQ de log4net:

Comment puis-je obtenir plusieurs processus pour se connecter au même fichier?

Par défaut, FileAppender contient un verrou d'écriture exclusif sur le fichier journal pendant la journalisation. Cela empêche les autres processus d'écrire dans le fichier . FileAppender peut être configuré pour utiliser un modèle de verrouillage différent , MinimalLock, qui n'acquiert que le verrouillage en écriture pendant l'écriture d'un journal . Cela permet à plusieurs processus d'entrelacer des écritures au même fichier , mais avec une perte de performance de . Voir les exemples de configuration FileAppender pour un exemple Configuration MinimalLock.

Bien que le modèle MinimalLock peut être utilisé pour entrelacer écrit dans un seul fichier il ne peut pas être la solution optimale , en particulier lors de la connexion de plusieurs machines . Vous pouvez également enregistrer un ou plusieurs processus sur RemotingAppenders. En utilisant le RemoteLoggingServerPlugin (ou IRemoteLoggingSink) un processus peut recevoir tous les événements et les enregistrer à un seul fichier journal.

Sans configuration supplémentaire, log4net place un verrou exclusif sur le fichier. En utilisant leur paramètre MinimalLock, vous pouvez "espérons" obtenir la journalisation partagée. En d'autres termes, votre kilométrage peut varier. En tant que stratégie alternative suggérée, étant donné que vous disposez d'une API interne avec des services Web, envisagez une méthode de service Web qui implémente un seul enregistreur statique privé en arrière-plan et ajoute des entrées au journal. Vous pouvez appeler la méthode Web de journalisation (de manière asynchrone si les performances sont critiques) à partir de vos autres méthodes Web où vous souhaitez implémenter la journalisation.

Questions connexes