DefaultTraceListener Classe

Definizione

Fornisce i metodi di output predefiniti e il comportamento per la traccia.

public ref class DefaultTraceListener : System::Diagnostics::TraceListener
public class DefaultTraceListener : System.Diagnostics.TraceListener
[System.Runtime.InteropServices.ComVisible(false)]
public class DefaultTraceListener : System.Diagnostics.TraceListener
type DefaultTraceListener = class
    inherit TraceListener
[<System.Runtime.InteropServices.ComVisible(false)>]
type DefaultTraceListener = class
    inherit TraceListener
Public Class DefaultTraceListener
Inherits TraceListener
Ereditarietà
DefaultTraceListener
Ereditarietà
DefaultTraceListener
Attributi

Esempio

Nell'esempio di codice seguente vengono calcolati i coefficienti binomiali, che sono valori usati nelle statistiche e nella probabilità. In questo esempio viene usato un oggetto DefaultTraceListener per tracciare i risultati e registrare gli errori. Crea un nuovo DefaultTraceListeneroggetto , lo aggiunge all'insieme Trace.Listeners e imposta la LogFileName proprietà sul file di log specificato negli argomenti della riga di comando.

Se viene rilevato un errore durante l'elaborazione del parametro di input o se la CalcBinomial funzione genera un'eccezione, il Fail metodo registra e visualizza un messaggio di errore. Se la AssertUiEnabled proprietà è false, il messaggio di errore viene scritto anche nella console. Quando il risultato viene calcolato correttamente, i Write(String) metodi e WriteLine(String) scrivono i risultati nel file di log.

I Failmetodi , Writee WriteLine causano la scrittura delle informazioni di traccia solo in DefaultTraceListener. Per scrivere informazioni di traccia in tutti i listener della Trace.Listeners raccolta, usare i Failmetodi , Writee WriteLine della Trace classe .

using System;
using System.Diagnostics;
using Microsoft.VisualBasic;

class Binomial
{

    // args(0) is the number of possibilities for binomial coefficients.
    // args(1) is the file specification for the trace log file.
    public static void Main(string[] args)
    {

        decimal possibilities;
        decimal iter;

        // Remove the original default trace listener.
        Trace.Listeners.RemoveAt(0);

        // Create and add a new default trace listener.
        DefaultTraceListener defaultListener;
        defaultListener = new DefaultTraceListener();
        Trace.Listeners.Add(defaultListener);

        // Assign the log file specification from the command line, if entered.
        if (args.Length>=2)
        {
            defaultListener.LogFileName = args[1];
        }

        // Validate the number of possibilities argument.
        if (args.Length>=1)

            // Verify that the argument is a number within the correct range.
        {
            try
            {
                const decimal MAX_POSSIBILITIES = 99;
                possibilities = Decimal.Parse(args[0]);
                if (possibilities<0||possibilities>MAX_POSSIBILITIES)
                {
                    throw new Exception(String.Format("The number of possibilities must " +
                        "be in the range 0..{0}.", MAX_POSSIBILITIES));
                }
            }
            catch(Exception ex)
            {
                string failMessage = String.Format("\"{0}\" " +
                    "is not a valid number of possibilities.", args[0]);
                defaultListener.Fail(failMessage, ex.Message);
                if (!defaultListener.AssertUiEnabled)
                {
                    Console.WriteLine(failMessage+ "\n" +ex.Message);
                }
                return;
            }
        }
        else
        {
            // Report that the required argument is not present.
            const string ENTER_PARAM = "Enter the number of " +
                      "possibilities as a command line argument.";
            defaultListener.Fail(ENTER_PARAM);
            if (!defaultListener.AssertUiEnabled)
            {
                Console.WriteLine(ENTER_PARAM);
            }
            return;
        }

        for(iter=0; iter<=possibilities; iter++)
        {
            decimal result;
            string binomial;

            // Compute the next binomial coefficient and handle all exceptions.
            try
            {
                result = CalcBinomial(possibilities, iter);
            }
            catch(Exception ex)
            {
                string failMessage = String.Format("An exception was raised when " +
                    "calculating Binomial( {0}, {1} ).", possibilities, iter);
                defaultListener.Fail(failMessage, ex.Message);
                if (!defaultListener.AssertUiEnabled)
                {
                    Console.WriteLine(failMessage+ "\n" +ex.Message);
                }
                return;
            }

            // Format the trace and console output.
            binomial = String.Format("Binomial( {0}, {1} ) = ", possibilities, iter);
            defaultListener.Write(binomial);
            defaultListener.WriteLine(result.ToString());
            Console.WriteLine("{0} {1}", binomial, result);
        }
    }

    public static decimal CalcBinomial(decimal possibilities, decimal outcomes)
    {

        // Calculate a binomial coefficient, and minimize the chance of overflow.
        decimal result = 1;
        decimal iter;
        for(iter=1; iter<=possibilities-outcomes; iter++)
        {
            result *= outcomes+iter;
            result /= iter;
        }
        return result;
    }
}
Imports System.Diagnostics

Module Binomial

    ' args(0) is the number of possibilities for binomial coefficients.
    ' args(1) is the file specification for the trace log file.
    Sub Main(ByVal args() As String)

        Dim possibilities As Decimal
        Dim iter As Decimal

        ' Remove the original default trace listener.
        Trace.Listeners.RemoveAt(0)

        ' Create and add a new default trace listener.
        Dim defaultListener As DefaultTraceListener
        defaultListener = New DefaultTraceListener
        Trace.Listeners.Add(defaultListener)

        ' Assign the log file specification from the command line, if entered.
        If args.Length >= 2 Then
            defaultListener.LogFileName = args(1)
        End If

        ' Validate the number of possibilities argument.
        If args.Length >= 1 Then

            ' Verify that the argument is a number within the correct range.
            Try
                Const MAX_POSSIBILITIES As Decimal = 99
                possibilities = Decimal.Parse(args(0))
                If possibilities < 0 Or possibilities > MAX_POSSIBILITIES Then
                    Throw New Exception( _
                        String.Format("The number of possibilities must " & _
                            "be in the range 0..{0}.", MAX_POSSIBILITIES))
                End If
            Catch ex As Exception
                Dim failMessage As String = String.Format("""{0}"" " & _
                    "is not a valid number of possibilities.", args(0))
                defaultListener.Fail(failMessage, ex.Message)
                If Not defaultListener.AssertUiEnabled Then
                    Console.WriteLine(failMessage & vbCrLf & ex.Message)
                End If
                Return
            End Try
        Else
            ' Report that the required argument is not present.
            Const ENTER_PARAM As String = "Enter the number of " & _
                "possibilities as a command line argument."
            defaultListener.Fail(ENTER_PARAM)
            If Not defaultListener.AssertUiEnabled Then
                Console.WriteLine(ENTER_PARAM)
            End If
            Return
        End If

        For iter = 0 To possibilities
            Dim result As Decimal
            Dim binomial As String

            ' Compute the next binomial coefficient and handle all exceptions.
            Try
                result = CalcBinomial(possibilities, iter)
            Catch ex As Exception
                Dim failMessage As String = String.Format( _
                        "An exception was raised when " & _
                        "calculating Binomial( {0}, {1} ).", _
                        possibilities, iter)
                defaultListener.Fail(failmessage, ex.Message)
                If Not defaultListener.AssertUiEnabled Then
                    Console.WriteLine(failMessage & vbCrLf & ex.Message)
                End If
                Return
            End Try

            ' Format the trace and console output.
            binomial = String.Format("Binomial( {0}, {1} ) = ", _
                            possibilities, iter)
            defaultListener.Write(binomial)
            defaultListener.WriteLine(result.ToString)
            Console.WriteLine("{0} {1}", binomial, result)
        Next
    End Sub

    Function CalcBinomial(ByVal possibilities As Decimal, _
                        ByVal outcomes As Decimal) As Decimal

        ' Calculate a binomial coefficient, and minimize the chance of overflow.
        Dim result As Decimal = 1
        Dim iter As Decimal
        For iter = 1 To possibilities - outcomes
            result *= outcomes + iter
            result /= iter
        Next
        Return result
    End Function
End Module

Commenti

Un'istanza di questa classe viene aggiunta automaticamente alle Debug.Listeners raccolte e Trace.Listeners . L'aggiunta esplicita di un secondo DefaultTraceListener causa messaggi duplicati nella finestra di output del debugger e nelle finestre di messaggio duplicate per le asserzioni.

Per impostazione predefinita, i Write metodi e WriteLine generano il messaggio alla funzione OutputDebugString Win32 e al Debugger.Log metodo .

Il Fail metodo, per impostazione predefinita, visualizza una finestra di messaggio quando l'applicazione è in esecuzione in modalità interfaccia utente e genera anche il messaggio utilizzando WriteLine.

Nota

La visualizzazione della finestra di messaggio per Assert le chiamate al metodo e Fail dipende dalla presenza di DefaultTraceListener. Se non DefaultTraceListener è presente nell'insieme Listeners , la finestra di messaggio non viene visualizzata. L'oggetto DefaultTraceListener può essere rimosso chiamando il Clear metodo sulla Listeners proprietà (System.Diagnostics.Trace.Listeners.Clear()). Per .NET Framework app, puoi anche usare l'elemento e l'elemento<clear> <remove> nel file di configurazione dell'app.

È necessario abilitare la traccia o il debug per usare un listener di traccia. La sintassi seguente è specifica del compilatore. Se si usano compilatori diversi da C# o Visual Basic, vedere la documentazione per il compilatore.

  • Per abilitare il debug in C#, aggiungere il /d:DEBUG flag alla riga di comando del compilatore quando si compila il codice o aggiungerlo #define DEBUG all'inizio del file. In Visual Basic aggiungere il /d:DEBUG=True flag alla riga di comando del compilatore.

  • Per abilitare la traccia in C#, aggiungere il /d:TRACE flag alla riga di comando del compilatore quando si compila il codice o aggiungerlo #define TRACE all'inizio del file. In Visual Basic aggiungere il /d:TRACE=True flag alla riga di comando del compilatore.

Per .NET Framework app, è possibile aggiungere un listener di traccia modificando il file di configurazione corrispondente al nome dell'applicazione. All'interno di questo file è possibile aggiungere un listener, impostarne il tipo e impostarne i parametri, rimuovere un listener o cancellare tutti i listener impostati in precedenza dall'applicazione. Il file di configurazione deve essere formattato in modo simile all'esempio seguente:

<configuration>  
<system.diagnostics>  
  <trace autoflush="false" indentsize="4">  
    <listeners>  
      <remove name="Default" />  
      <add name="myListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="c:\myListener.log" />  
    </listeners>  
  </trace>  
</system.diagnostics>  
</configuration>  

Costruttori

DefaultTraceListener()

Inizializza una nuova istanza della classe DefaultTraceListener con "Default" come valore della proprietà Name.

Proprietà

AssertUiEnabled

Ottiene o imposta un valore che indica se l'applicazione è in esecuzione nella modalità interfaccia utente.

Attributes

Ottiene gli attributi personalizzati del listener di traccia definiti nel file di configurazione dell'applicazione.

(Ereditato da TraceListener)
Filter

Ottiene o imposta il filtro di traccia per il listener di traccia.

(Ereditato da TraceListener)
IndentLevel

Ottiene o imposta il livello di rientro.

(Ereditato da TraceListener)
IndentSize

Ottiene o imposta il numero di spazi in un rientro.

(Ereditato da TraceListener)
IsThreadSafe

Ottiene un valore che indica se il listener di traccia è thread-safe.

(Ereditato da TraceListener)
LogFileName

Ottiene o imposta il nome di un file di log in cui scrivere i messaggi di traccia o debug.

Name

Ottiene o imposta un nome per l'oggetto TraceListener.

(Ereditato da TraceListener)
NeedIndent

Ottiene o imposta un valore che indica se impostare il rientro dell'output.

(Ereditato da TraceListener)
TraceOutputOptions

Ottiene o imposta le opzioni dell'output di traccia.

(Ereditato da TraceListener)

Metodi

Close()

Quando se ne esegue l'override in una classe derivata, chiude il flusso di output in modo da bloccare la ricezione di output di tracciatura o di debug.

(Ereditato da TraceListener)
CreateObjRef(Type)

Consente di creare un oggetto che contiene tutte le informazioni rilevanti necessarie per la generazione del proxy utilizzato per effettuare la comunicazione con un oggetto remoto.

(Ereditato da MarshalByRefObject)
Dispose()

Rilascia tutte le risorse usate da TraceListener.

(Ereditato da TraceListener)
Dispose(Boolean)

Rilascia le risorse non gestite usate da TraceListener e, facoltativamente, le risorse gestite.

(Ereditato da TraceListener)
Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
Fail(String)

Genera o visualizza un messaggio e una traccia dello stack per un'asserzione che ha sempre esito negativo.

Fail(String, String)

Genera o visualizza un messaggio dettagliato e una traccia dello stack per un'asserzione che ha sempre esito negativo.

Flush()

Quando se ne esegue l'override in una classe derivata, scarica il buffer di output.

(Ereditato da TraceListener)
GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetLifetimeService()
Obsoleta.

Consente di recuperare l'oggetto servizio di durata corrente per controllare i criteri di durata per l'istanza.

(Ereditato da MarshalByRefObject)
GetSupportedAttributes()

Ottiene gli attributi personalizzati supportati dal listener di traccia.

(Ereditato da TraceListener)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
InitializeLifetimeService()
Obsoleta.

Ottiene un oggetto servizio di durata per controllare i criteri di durata per questa istanza.

(Ereditato da MarshalByRefObject)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
MemberwiseClone(Boolean)

Crea una copia dei riferimenti dell'oggetto MarshalByRefObject corrente.

(Ereditato da MarshalByRefObject)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)
TraceData(TraceEventCache, String, TraceEventType, Int32, Object)

Scrive le informazioni di traccia, un oggetto dati e le informazioni di evento nell'output specifico del listener.

(Ereditato da TraceListener)
TraceData(TraceEventCache, String, TraceEventType, Int32, Object[])

Scrive le informazioni di traccia, una matrice di oggetti dati e le informazioni di evento nell'output specifico del listener.

(Ereditato da TraceListener)
TraceEvent(TraceEventCache, String, TraceEventType, Int32)

Scrive le informazioni di traccia e di evento nell'output specifico del listener.

(Ereditato da TraceListener)
TraceEvent(TraceEventCache, String, TraceEventType, Int32, String)

Scrive le informazioni di traccia, un messaggio e le informazioni di evento nell'output specifico del listener.

(Ereditato da TraceListener)
TraceEvent(TraceEventCache, String, TraceEventType, Int32, String, Object[])

Scrive le informazioni di traccia, una matrice di oggetti formattata e le informazioni di evento nell'output specifico del listener.

(Ereditato da TraceListener)
TraceTransfer(TraceEventCache, String, Int32, String, Guid)

Scrive le informazioni di traccia, un messaggio, l'identità di un'attività correlata e le informazioni di evento nell'output specifico del listener.

(Ereditato da TraceListener)
Write(Object)

Scrive il valore del metodo ToString() dell'oggetto nel listener creato durante l'implementazione della classe TraceListener.

(Ereditato da TraceListener)
Write(Object, String)

Scrive un nome di categoria e il valore del metodo ToString() dell'oggetto nel listener creato durante l'implementazione della classe TraceListener.

(Ereditato da TraceListener)
Write(String)

Scrive l'output nella funzione OutputDebugString e nel metodo Log(Int32, String, String).

Write(String, String)

Scrive un nome di categoria e un messaggio nel listener creato durante l'implementazione della classe TraceListener.

(Ereditato da TraceListener)
WriteIndent()

Inserisce il rientro nel listener creato quando si implementa questa classe e reimposta la proprietà NeedIndent su false.

(Ereditato da TraceListener)
WriteLine(Object)

Scrive il valore del metodo ToString() dell'oggetto nel listener creato durante l'implementazione della classe TraceListener, seguito da un terminatore di riga.

(Ereditato da TraceListener)
WriteLine(Object, String)

Scrive un nome di categoria e il valore del metodo ToString() dell'oggetto nel listener creato durante l'implementazione della classe TraceListener, seguito da un terminatore di riga.

(Ereditato da TraceListener)
WriteLine(String)

Scrive l'output nella funzione OutputDebugString e nel metodo Log(Int32, String, String) seguito da un ritorno a capo e da un avanzamento riga (\r\n).

WriteLine(String, String)

Scrive un nome di categoria e un messaggio nel listener creato durante l'implementazione della classe TraceListener, seguiti da un terminatore di riga.

(Ereditato da TraceListener)

Si applica a

Thread safety

Questa classe è thread-safe.

Vedi anche