J'ai créé un scénario simple à l'aide de Log4net, mais il semble que mes ajouts de journal ne fonctionnent pas car les messages ne sont pas ajoutés au fichier journal.
J'ai ajouté ce qui suit au fichier web.config:
<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 fichier ASAX global, j'ai ajouté:
ILog logger = LogManager.GetLogger(typeof(MvcApplication));
Et dans la méthode Application_Start:
logger.Info("Starting the application...");
Pourquoi le journal de test "Démarrage de l'application ..." n'est pas ajouté au fichier journal?
AssemblyInfo
fichier. Publié comme réponse ci-dessous.Utilisez cette page FAQ: Apache log4net Foire Aux Questions
Environ 3/4 de la descente, il vous indique comment activer le débogage de log4net à l'aide du suivi d'application. Cela vous indiquera où se situe votre problème.
Les bases sont:
Et vous voyez la trace dans la sortie standard
la source
root
section faisait référence au mauvais enregistreur !!Comme @AndreasPaulsson l'a suggéré, nous devons le configurer. Je fais la configuration dans le
AssemblyInfo
fichier. Je précise leconfiguration file name
ici.la source
Assurez-vous également que l' option «Copier toujours» est sélectionnée pour [log4net] .config
la source
Assurez-vous que le processus (compte) sous lequel le site s'exécute dispose des privilèges pour écrire dans le répertoire de sortie.
Dans IIS 7 et au-dessus, cela est configuré sur le pool d'applications et correspond normalement à l' identité AppPool , qui ne sera normalement pas autorisée à écrire dans tous les répertoires.
Vérifiez vos journaux d'événements (application et sécurité) pour voir si des exceptions ont été levées.
la source
Insérer:
à la fin du fichier AssemblyInfo.cs
la source
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 quelque chose d'autre qu'il a recommencé.
Il semble que s'il existe déjà un fichier journal du même nom, rien ne se passe.
Ensuite, je renomme l'ancien fichier et ai changé le nom du fichier journal dans la configuration à nouveau à ce qu'il était.
la source
Dans mon cas, log4net ne se connectait pas correctement en raison d'un espace dans le nom de mon projet. Cela m'a rendu fou de savoir 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 projet. J'ai appris ma leçon.
la source
Dans mon cas, j'ai dû donner l'
IIS_IUSRS
autorisation de lecture / écriture au fichier journal.la source
Assurez-vous que le code de ligne suivant doit être présent dans le fichier AssemblyInfo.cs.
[assembly: log4net.Config.XmlConfigurator (ConfigFile = "Web.config", Watch = true)]
et vérifiez également cette ligne dans la méthode Application_start ().
la source
Votre fichier de configuration semble correct. Ensuite, vous devez enregistrer votre fichier de configuration Log4net dans l'application. Vous pouvez donc utiliser le code ci-dessous:
Après le processus d'enregistrement, vous pouvez appeler la définition ci-dessous pour appeler l'enregistreur:
la source
Pour moi, j'ai dû déplacer Logger vers un package Nuget. Le code ci-dessous doit être ajouté dans le projet de package NuGet.
Voir https://gurunadhduvvuru.wordpress.com/2020/04/30/log4net-issues-when-moved-it-to-a-nuget-package/ pour plus de détails.
la source
Il existe plusieurs façons d'utiliser log4net. J'ai trouvé cela utile pendant que je cherchais une solution. La solution est décrite ici: https://www.hemelix.com/log4net/
la source