Log4net n’écrit pas le fichier journal

J’ai créé un scénario simple à l’aide de Log4net, mais il semble que mes appenders ne fonctionnent pas car les messages ne sont pas ajoutés au fichier journal.

J’ai ajouté les éléments suivants au fichier web.config:

 

Dans le fichier ASAX global, j’ai ajouté:

 ILog logger = LogManager.GetLogger(typeof(MvcApplication)); 

et dans la méthode Application_Start:

 logger.Info("Starting the application..."); 

Qu’ai-je fait de mal?

Appelez-vous

 log4net.Config.XmlConfigurator.Configure(); 

quelque part pour faire log4net lire votre configuration? Par exemple, dans Global.asax:

 void Application_Start(object sender, EventArgs e) { // Code that runs on application startup // Initialize log4net. log4net.Config.XmlConfigurator.Configure(); } 

Utilisez cette page FAQ: Apache log4net Foire aux questions

À environ les trois quarts, il vous indique comment activer le débogage de log4net à l’aide du traçage des applications. Cela vous dira où est votre problème.

Les bases sont:

       

Et vous voyez la trace dans la sortie standard

Comme l’a suggéré @AndreasPaulsson, nous devons le configurer. Je fais la configuration dans le fichier AssemblyInfo . Je spécifie le configuration file name ici.

 // Log4Net Configuration. [assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)] 

Assurez-vous également que l’option “Copier toujours” est sélectionnée pour [log4net] .config comme cette image:

entrer la description de l'image ici

Assurez-vous que le processus (compte) sous lequel le site est exécuté dispose des privilèges pour écrire dans le répertoire de sortie.

Dans IIS 7 et versions ultérieures , ce paramètre est configuré sur le pool d’applications et correspond normalement à AppPool Identity , qui n’est normalement pas autorisé à écrire dans tous les répertoires.

Vérifiez vos journaux d’événements (application et sécurité) pour voir si des exceptions ont été émises.

Insérer:

  [assembly: log4net.Config.XmlConfigurator(Watch = true)] 

à la fin du fichier AssemblyInfo.cs

Dans mon cas, log4net ne se connectait pas correctement car il y avait un espace dans le nom du projet. Je suis devenu fou pourquoi le même code fonctionnait très bien dans un projet différent, mais pas dans le nouveau. Les espaces. Un espace simple

Alors, méfiez-vous des espaces dans les noms de projets. J’ai appris ma leçon

Pour moi, j’ai déplacé l’emplacement des fichiers journaux et ce n’est que lorsque j’ai changé le nom du fichier en autre chose que cela a recommencé.

Il semble que s’il existe déjà un fichier journal portant le même nom, rien ne se passe.

Par la suite, je renomme l’ancien fichier et change le nom de fichier du journal dans la configuration en fonction de ce qu’il était.