Recherche…


Introduction

Log4net est un système de journalisation à arrêt automatique. Échec d'arrêt signifie qu'il arrête la journalisation sur une exception interne et n'interagit pas par conception avec le flux de programme. Sachant cela vous explique que le dépannage log4net n'est pas si facile. Si la journalisation échoue, votre programme ne le remarque pas. Vous voyez beaucoup de questions sur: pourquoi mon log4net logging ne fonctionne pas? Cet article explique le dépannage de base et les solutions les plus courantes.

Dans la plupart des cas, la première étape consiste à activer le débogage interne pour log4net.

Activer le débogage interne

Il existe deux manières d'activer le débogage interne dans log4net:

  • Spécifiez l'option log4net.Internal.Debug dans le fichier de configuration de l'application
  • Activer le débogage interne de log4net par programme

Spécifiez l'option log4net.Internal.Debug dans le fichier de configuration de l'application

C'est la méthode préférée pour activer le débogage interne, ajoutez la clé log4net.Internal.Debug au fichier app.config de votre application.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <appSettings>
        <add key="log4net.Internal.Debug" value="true"/>
    </appSettings>
</configuration>

La journalisation du débogage démarre immédiatement au démarrage de l'application.

Activer le débogage interne de log4net par programme

Une deuxième manière consiste à le faire par programmation. Définissez la propriété log4net.Util.LogLog.InternalDebugging sur true:

log4net.Util.LogLog.InternalDebugging = true;

Sortie du journal de débogage interne

Les messages de débogage internes sont écrits sur la console et sur le System.Diagnostics.Trace. Lorsque vous devez consolider la sortie, vous pouvez rediriger le System.Console.Out. Ou vous pouvez rediriger le message de trace vers un fichier:

<configuration>
...

<system.diagnostics>
    <trace autoflush="true">
        <listeners>
            <add 
                name="textWriterTraceListener" 
                type="System.Diagnostics.TextWriterTraceListener" 
                initializeData="C:\tmp\log4net.txt" />
        </listeners>
    </trace>
</system.diagnostics>

...
</configuration>

Appenders tamponnés

Certains des appender log4net sont des appenders tamponnés. Ces utilisateurs enregistreront uniquement un certain nombre de messages enregistrés. Certains exemples sont SmtpAppender, RemotingAppender ou AdoNetAppender. Ces appenders ont un paramètre BufferSize:

<bufferSize value="100" />

Cela signifie que l'enregistreur se connectera lorsqu'il y aura 100 messages dans le tampon. Lorsque vous souhaitez tester l'appender, vous pouvez définir le bufferSize à 1.

Si vous voulez que le tampon à vider d'une erreur, vous pouvez utiliser un évaluateur:

<evaluator type="log4net.Core.LevelEvaluator">
     <threshold value="ERROR"/>
</evaluator>

Si la condition de l'évaluateur est remplie, le tampon sera vidé.

Configurez () non appelé ou appelé plusieurs fois

Si vous ne voyez aucune journalisation, vous pouvez vérifier si Configure() est appelé dans votre application. Le moyen le plus simple est de l'ajouter en tant qu'attribut à votre assembly:

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

Ensuite, vous n'avez pas à ajouter log4net.Config.XmlConfigurator.Configure() n'importe où dans votre configuration. Ou vous pouvez ajouter log4net.Config.XmlConfigurator.Configure() dans l'une de vos méthodes de démarrage. Assurez-vous d'appeler la configuration une seule fois.

Le composant de fichier n'écrit pas

Si vous avez un appender de fichier, assurez-vous d’écrire dans un emplacement où l’utilisateur est autorisé à créer et à mettre à jour les fichiers. Sinon, la journalisation échouera. Vous pouvez le vérifier lorsque le débogage interne est activé.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow