2009-08-27 5 views
3

Je veux mettre en œuvre un écouteur de trace personnalisée comme suit:Implémentation de l'écouteur de trace personnalisé. Écrire et WriteLine de comportement problématique

public class TraceListener : System.Diagnostics.TraceListener 
{ 

    public override void Write(string message) 
    { 
     LogToDatabase(message); 
    } 

    public override void WriteLine(string message) 
    { 
     LogToDatabase(message); 
    } 
} 

Supposons maintenant une erreur se produit quelque part dans le code. Dans le bloc de capture que je veux faire

Trace.TraceError(ex.ToString()) 

où ex est pris exception. Maintenant, le problème est que dans mon MyTraceListener les paramètres de message de la méthode Write et de la méthode WriteLine sont différents. Et encore plus intéressant, la chaîne générée par ex.ToString() est passée en paramètre dans la méthode WriteLine mais pas dans Write.

Répondre

3

En fait, la méthode Trace.TraceError() appelle deux méthodes: d'abord exécuter Write() pour imprimer/écrire la source d'une erreur avec le code d'erreur et la méthode WriteLine() pour imprimer/écrire une description d'erreur. PS: Avant d'ajouter une instance de Custom TraceListener, utilisez la méthode Clear() pour supprimer l'instance par défaut de l'écouteur de trace.

+1

Wow. Je n'ai jamais prévu que Write et WriteLine aient des paramètres différents. –

Questions connexes