Log4net ne pas écrire dans le fichier journal
J'ai créé un scénario simple à l'aide de Log4net, mais il semble que mon appenders ne fonctionnent pas parce que les messages ne sont pas ajoutés au fichier de log.
J'ai ajouté les éléments suivants pour le web.fichier de configuration:
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" requirePermission="false"/>
</configSections>
<log4net>
<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
<file value="D:\MyData\Desktop\LogFile.txt" />
<appendToFile value="true" />
<encoding value="utf-8" />
<layout type="log4net.Layout.SimpleLayout" />
</appender>
<root>
<level value="INFO" />
<appender-ref ref="LogFileAppender" />
</root>
</log4net>
Dans le global ASAX fichier que j'ai ajouté:
ILog logger = LogManager.GetLogger(typeof(MvcApplication));
et à l'intérieur de la méthode Application_Start:
logger.Info("Starting the application...");
Qu'ai-je fait de mal?
Vous devez vous connecter pour publier un commentaire.
Appelez-vous
quelque part pour faire de log4net lire votre configuration? E. g. Mondiale.asax:
AssemblyInfo
fichier. Posté comme une réponse ci-dessous.Utiliser cette page de FAQ: Apache log4net Questions Fréquemment Posées
Sur les 3/4 de la façon dont il vous indique comment faire pour activer log4net de débogage à l'aide de suivi. Cela vous indiquera où votre problème est.
Les principes de base sont:
Et vous voyez la trace dans la sortie standard
root
l'article faisait référence à la mauvaise enregistreur!!Comme @AndreasPaulsson suggéré, nous avons besoin de le configurer. Je suis en train de faire la configuration dans
AssemblyInfo
fichier. - Je indiquer leconfiguration file name
ici.Aussi, assurez-vous que le "Copy" de l'option sélectionnée pour [log4net].config comme cette image:
Assurez-vous que le processus (de compte) que le site est en cours d'exécution en vertu de l'possède les droits pour écrire dans le répertoire de sortie.
Dans IIS 7 et au-dessus de ce paramètre est configuré sur l'application de la piscine et est normalement le L'Identité Du Pool D'Applications, ce qui n'est normalement pas autorisé à écrire à tous les répertoires.
Vérifier vos journaux d'événements (d'application et de sécurité) pour voir si des exceptions ont été jetés.
Insérer:
à la fin de AssemblyInfo.cs fichier
Dans mon cas, log4net n'était pas la journalisation correctement en raison d'avoir un espace dans mon nom de projet. M'ont rendu fou pourquoi le même code a très bien fonctionné dans un autre projet, mais ne l'a pas dans le nouveau. Des espaces. D'un simple espace.
Alors, méfiez-vous des espaces dans les noms de projet. J'ai appris ma leçon.
Pour moi, j'ai déménagé à l'emplacement des fichiers de log et c'est seulement quand j'ai changé le nom du fichier à autre chose, il a commencé à nouveau.
Il semble que si il y a un fichier avec le même nom existe déjà, il ne se passe rien.
Ensuite, j'ai renommer l'ancien fichier et changé le nom du fichier journal dans la config de nouveau à ce qu'il était.