75 votes

Comment enregistrer les messages de trace avec log4net?

J'utilise log4net pour consigner le message de journal d'écriture dans un fichier journal défilant.

Maintenant, je voudrais également rediriger tous les messages de trace de System.Diagnostics.Trace vers ce fichier journal. Comment puis-je configurer cela? J'ai essayé de trouver quoi que ce soit à ce sujet dans la documentation de log4net, mais sans succès. Est-ce possible?

La raison pour laquelle je veux faire cela est que je suis intéressé par les messages de trace d'une bibliothèque tierce.

 <log4net>
    <appender name="R1" type="log4net.Appender.RollingFileAppender">
      <file value="C:\Logs\MyService.log" />
      <appendToFile value="true" />
      <rollingStyle value="Date" />
      <maxSizeRollBackups value="10" />
      <datePattern value="yyyyMMdd" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
      </layout>
    </appender>
</log4net>
 

73voto

0xA3 Points 73439

Selon la suggestion de Rune, j'ai implémenté un TraceListener de base qui sortait vers log4net:

 public class Log4netTraceListener : System.Diagnostics.TraceListener
{
    private readonly log4net.ILog _log;

    public Log4netTraceListener()
    {
        _log = log4net.LogManager.GetLogger("System.Diagnostics.Redirection");
    }

    public Log4netTraceListener(log4net.ILog log)
    {
        _log = log;
    }

    public override void Write(string message)
    {
        if (_log != null)
        {
            _log.Debug(message);
        }
    }

    public override void WriteLine(string message)
    {
        if (_log != null)
        {
            _log.Debug(message);
        }
    }
}
 

26voto

Rune Grimstad Points 17775

Je ne sais pas si log4net prend cela en charge, mais vous pouvez implémenter votre propre écouteur de trace qui l’a fait.

TraceListener n'a pas trop de méthode à implémenter et tout ce que vous feriez est de transmettre les valeurs à log4net afin que cela soit facile à faire.

Pour ajouter un écouteur de trace personnalisé, vous pouvez modifier votre app.config / web.config ou vous l'ajoutez dans le code en utilisant Trace.Listeners.Add(new Log4NetTraceListener());

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X