Exportar (0) Imprimir
Expandir todo
Este tema aún no ha recibido ninguna valoración - Valorar este tema

DefaultTraceListener (Clase)

Actualización: noviembre 2007

Proporciona los métodos de salida y el comportamiento predeterminados para llevar a cabo el seguimiento.

Espacio de nombres:  System.Diagnostics
Ensamblado:  System (en System.dll)
[HostProtectionAttribute(SecurityAction.LinkDemand, Synchronization = true)]
public class DefaultTraceListener : TraceListener
/** @attribute HostProtectionAttribute(SecurityAction.LinkDemand, Synchronization = true) */
public class DefaultTraceListener extends TraceListener
public class DefaultTraceListener extends TraceListener
8fdtceh6.alert_note(es-es,VS.90).gifNota:

El atributo HostProtectionAttribute aplicado a este tipo o miembro tiene el siguiente valor de la propiedad Resources: Synchronization. El atributo HostProtectionAttribute no afecta a las aplicaciones de escritorio (que normalmente se inician haciendo doble clic en un icono, escribiendo un comando o introduciendo una dirección URL en el explorador). Para obtener más información, vea la clase HostProtectionAttribute o Programación de SQL Server y atributos de protección del host.

Una instancia de esta clase se agrega automáticamente a las colecciones Debug.Listeners y Trace.Listeners. Agregar explícitamente un segundo DefaultTraceListener duplicará los mensajes en la ventana de resultados del depurador y los cuadros de mensajes para las aserciones.

De manera predeterminada, los métodos Write y WriteLine envían el mensaje a la función OutputDebugString de Win32 y al método Debugger.Log. Para obtener información sobre la función OutputDebugString, vea Platform SDK o MSDN.

El método Fail muestra, de forma predeterminada, un cuadro de mensaje cuando la aplicación se ejecuta en modo de interfaz de usuario; también envía el mensaje utilizando WriteLine.

Para utilizar un agente de escucha de seguimiento, deberá habilitarse el seguimiento o la depuración. La sintaxis siguiente es específica del compilador. Si se utilizan compiladores que no sean C# o Visual Basic, consulte la documentación del compilador.

  • Para habilitar la depuración en C#, agregue el indicador /d:DEBUG a la línea de comandos del compilador cuando compile el código o agregue #define DEBUG al principio del archivo. En Visual Basic, agregue el indicador /d:DEBUG=True a la línea de comandos del compilador.

  • Para habilitar el seguimiento en C#, agregue el indicador /d:TRACE a la línea de comandos del compilador en el momento de compilar el código o bien agregue #define TRACE al principio del archivo. En Visual Basic, agregue el indicador /d:TRACE=True a la línea de comandos del compilador.

Para agregar un agente de escucha de seguimiento, deberá modificarse el archivo de configuración correspondiente al nombre de la aplicación. En este archivo, se podrá agregar un agente de escucha, establecer el tipo de agente y sus parámetros, quitar un agente o borrar todos los agentes definidos previamente por la aplicación. El archivo de configuración debería tener el mismo formato que en el siguiente ejemplo:

<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>

En el siguiente ejemplo de código se calculan coeficientes binomiales (valores utilizados en probabilidad y estadística). El ejemplo usa DefaultTraceListener para hacer el seguimiento de los resultados y registrar los errores. Crea un DefaultTraceListener nuevo, lo agrega a la colección Trace.Listeners y establece la propiedad LogFileName en el archivo de registro especificado en los argumentos de la línea de comandos.

Si se detecta un error al procesar el parámetro de entrada, o la función CalcBinomial producen una excepción, el método Fail registrará y mostrará un mensaje de error. Si la propiedad AssertUiEnabled es false, el mensaje de error también se escribirá en la consola. Si el cálculo del resultado es correcto, los métodos Write(String) y WriteLine(String) escribirán los resultados en el archivo de registro.

Los métodos Fail, Write y WriteLine hacen que la información de seguimiento se escriba únicamente en DefaultTraceListener. Para que la información de seguimiento se escriba en todos los agentes de escucha de la colección Trace.Listeners, deberán utilizarse los métodos Fail, Write y WriteLine de la clase Trace.

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;
    }
}


System.Object
  System.MarshalByRefObject
    System.Diagnostics.TraceListener
      System.Diagnostics.DefaultTraceListener

Esta clase es segura para subprocesos.

Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile para Smartphone, Windows Mobile para Pocket PC, Xbox 360

.NET Framework y .NET Compact Framework no admiten todas las versiones de cada plataforma. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

.NET Framework

Compatible con: 3.5, 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Compatible con: 3.5, 2.0, 1.0

XNA Framework

Compatible con: 2.0, 1.0
¿Te ha resultado útil?
(Caracteres restantes: 1500)
Gracias por sus comentarios

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft. Reservados todos los derechos.