2010-07-09 4 views
0

Dans une configuration de fichier XML distincte, je place dans mon répertoire racine mon application fonctionne parfaitement avec les deux appenders.RollingfileAppender n'a pas pu répondre en raison d'une configuration spécifique même si l'AdonetAppender fonctionne correctement

Cependant, j'ai trouvé un moyen facile et plus efficace de configurer à partir d'un fichier externe qui m'a permis la flexibilité d'utiliser le même fichier de configuration pour différentes applications ...

également un avantage plus est que j'ai besoin pour apporter toute modification au global.asax et à l'assembly.

Voici le code que j'ajouté à mon web.config

<appSettings> 
    <add key="log4net.Config" value="C:\\log\Log4Net.config"/> 
</appSettings> 

Ce code est supposé mettre le fichier de configuration dans mon répertoire racine. Et tout ce que je devais faire était de référencer le fichier log4net.dll et de commencer la journalisation.

Même si mon AdoNetAppender fonctionne correctement et que je vois les messages instantanément dans ma table. Mais mon fichierAppendants ne crée pas de fichiers ni n'enregistre les messages dans des fichiers existants. Est-ce que c'est seulement compatible avec la base de données ou il me manque quelque chose?

+0

Utilisez-vous déjà le fichier de configuration pour différentes applications? Je pense que RollingFileAppender permet à d'autres applications de lire le fichier de configuration pendant qu'il l'utilise, mais pas d'y écrire. Donc, si vous l'utilisez à partir de deux applications en même temps, cela peut être le problème. –

+0

Oh ouais j'utilise le même fichier de configuration pour 2 applications. Cela pourrait être le problème .. alors je suppose que je vais m'en tenir à la création de fichier de configuration dans le répertoire racine pour chaque application. Merci Philipp – Precious

Répondre

1

Vous pouvez régler la LockingModel du RollingFileAppender à MinimalLock pour forcer le appender pour ouvrir et fermer le fichier pour chaque enregistrement des événements. Pas vraiment efficace, et il est toujours possible qu'une application ne puisse pas se connecter si elle essaie de se connecter exactement au même moment, mais si la fréquence d'enregistrement est suffisamment basse, cela peut suffire.

Une meilleure solution consiste à utiliser une chaîne de modèle pour le nom de fichier de l'appender qui inclut le nom de l'application; De cette façon, différentes applications peuvent utiliser le même fichier de configuration, mais vont écrire dans des fichiers journaux différents. Dans la plupart des cas, la variable "% appdomain" fonctionnera à cette fin (bien que pour les applications web ou ClickOnce, vous deviez être un peu plus créatif).

0

Avec RollingFileAppender standard, il est impossible de se connecter à un seul fichier à partir de plusieurs processus car l'appender verrouille le fichier pour y écrire. La FAQ de log4net fournit une solution pour cela.

Voir log4net FAQ

Cordialement