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

TraceSource (Clase)

Nota: esta clase es nueva en la versión 2.0 de .NET Framework.

Proporciona un conjunto de métodos y propiedades que permiten a las aplicaciones realizar un seguimiento de la ejecución de código y asociar los mensajes de seguimiento a su origen.

Espacio de nombres: System.Diagnostics
Ensamblado: System (en system.dll)

'Declaración
Public Class TraceSource
'Uso
Dim instance As TraceSource

public class TraceSource
public class TraceSource

Las aplicaciones utilizan la clase TraceSource para realizar seguimientos que se pueden asociar a la aplicación. TraceSource proporciona métodos de seguimiento que permiten realizar fácilmente un seguimiento de los eventos y datos, además de emitir seguimientos informativos. Los resultados de seguimiento de TraceSource se pueden controlar mediante el archivo de configuración. Este archivo está ubicado en la carpeta que contiene el ejecutable de la aplicación y tiene el nombre de la aplicación con la extensión .config. Por ejemplo, el nombre del archivo de configuración de TraceSourceSample.exe es TraceSourceSample.exe.config. El archivo de configuración se puede utilizar para determinar adónde se va a enviar la información de seguimiento y de qué niveles de actividad se va a realizar un seguimiento. En el ejemplo siguiente se muestra el contenido de un archivo de configuración de aplicación de ejemplo.

<configuration>
  <system.diagnostics>
    <sources>
      <source name="TraceTest" switchName="SourceSwitch" 
        switchType="System.Diagnostics.SourceSwitch" >
        <listeners>
          <add name="console" />
          <remove name ="Default" />
        </listeners>
      </source>
    </sources>
    <switches>
      <!-- You can set the level at which tracing is to occur -->
      <add name="SourceSwitch" value="Warning" />
        <!-- You can turn tracing off -->
        <!--add name="SourceSwitch" value="Off" -->
    </switches>
    <sharedListeners>
      <add name="console" 
        type="System.Diagnostics.ConsoleTraceListener" 
        initializeData="false"/>
    </sharedListeners>
    <trace autoflush="true" indentsize="4">
      <listeners>
        <add name="console" />
      </listeners>
    </trace>
  </system.diagnostics>
</configuration>

La clase TraceSource viene identificada por el nombre de un origen, que suele ser el nombre de la aplicación. Los mensajes de seguimiento procedentes de un componente determinado los puede iniciar un origen de seguimiento específico, lo que permite que todos los mensajes procedentes de ese componente puedan identificarse con facilidad.

TraceSource define los métodos de seguimiento pero, en realidad, no proporciona ningún mecanismo concreto para generar y almacenar los datos de seguimiento. Los datos de seguimiento los generan los agentes de escucha de seguimiento, que son complementos que pueden cargar los orígenes de seguimiento.

Para personalizar el destino de los resultados de seguimiento, agregue o quite instancias de TraceListener de la colección almacenada en la propiedad TraceSource.Listeners. De manera predeterminada, los resultados de seguimiento se generan utilizando una instancia de la clase DefaultTraceListener. En el anterior ejemplo de archivo de configuración se muestra cómo quitar el DefaultTraceListener y agregar un ConsoleTraceListener para generar los resultados de seguimiento para el origen de seguimiento. Para obtener más información, vea Elemento <listeners> de <source> y <sharedListeners> (Elemento).

La clase SourceSwitch proporciona los medios para controlar de forma dinámica los resultados de seguimiento. En el anterior ejemplo de archivo de configuración se muestra cómo se puede desactivar el seguimiento de un origen de seguimiento y controlar el nivel en el que se produce el seguimiento. Se puede modificar el valor del modificador de origen sin tener que volver a compilar la aplicación. Para obtener información sobre cómo utilizar el archivo de configuración para establecer un modificador, vea Switch y Cómo: Configurar modificadores de seguimiento.

NotaNota

Si se modifica un archivo de configuración durante la ejecución de una aplicación, es preciso detener la aplicación e reiniciarla, o bien, llamar al método Refresh para que surta efecto la nueva configuración.

La enumeración TraceEventType se utiliza para definir el tipo de evento del mensaje de seguimiento. Los filtros de seguimiento utilizan TraceEventType para determinar si un agente de escucha de seguimiento debe generar el mensaje de seguimiento.

Los agentes de escucha de seguimiento pueden tener opcionalmente una capa adicional de filtrado a través de un filtro de seguimiento. Si un agente de escucha de seguimiento tiene un filtro asociado, el agente de escucha llama al método ShouldTrace en ese filtro para determinar si debe generar la información de seguimiento.

Los agentes de escucha de seguimiento utilizan los valores de las propiedades Indent, IndentSize y AutoFlush de la clase Trace para dar formato a los resultados de seguimiento. Los atributos del archivo de configuración se pueden utilizar para establecer el valor de las propiedades Indent, IndentSize y AutoFlush. En el ejemplo siguiente se establece el valor de la propiedad AutoFlush en false y el valor de la propiedad IndentSize en 3.

<configuration>
  <system.diagnostics>
    <trace autoflush="false" indentsize="3" />
  </system.diagnostics>
</configuration>

En el ejemplo de código siguiente se muestra el uso de la clase TraceSource para enviar seguimientos a los agentes de escucha. También se muestra el uso de los modificadores y filtros.

' The following configuration file can be used with this sample.
' When using a configuration file #define ConfigFile.
'<configuration>
'    <system.diagnostics>
'        <sources>
'            <source name="TraceTest" switchName="SourceSwitch" switchType="System.Diagnostics.SourceSwitch" >
'                <listeners>
'                    <add name="console" type="System.Diagnostics.ConsoleTraceListener" initializeData="false" />
'                    <remove name ="Default" />
'                </listeners>
'            </source>
'        </sources>
'        <switches>
'            <!-- You can set the level at which tracing is to occur -->
'            <add name="SourceSwitch" value="Warning" />
'            <!-- You can turn tracing off -->
'            <!--add name="SourceSwitch" value="Off" -->
'        </switches>
'        <trace autoflush="true" indentsize="4"></trace>
'    </system.diagnostics>
'</configuration>
#Const TRACE = True
#Const ConfigFile = True

Imports System
Imports System.Collections
Imports System.Diagnostics
Imports System.Reflection
Imports System.IO
Imports System.Security.Permissions



Class TraceTest
    ' Initialize the trace source.
    Private Shared ts As New TraceSource("TraceTest") 
    <SwitchAttribute("SourceSwitch", GetType(SourceSwitch))>  _
    Shared Sub Main() 
        Try
            ' Initialize trace switches.
#If (ConfigFile = False) Then
            Dim sourceSwitch As New SourceSwitch("SourceSwitch", "Verbose")
#End If
            DisplayProperties(ts)
            ts.Listeners("console").TraceOutputOptions = ts.Listeners("console").TraceOutputOptions Or TraceOptions.Callstack
            ts.TraceEvent(TraceEventType.Warning, 1)
            ts.Listeners("console").TraceOutputOptions = TraceOptions.DateTime
            ' Issue file not found message as a warning.
            ts.TraceEvent(TraceEventType.Warning, 2, "File Test not found")
            ' Issue file not found message as a verbose event using a formatted string.
            ts.TraceEvent(TraceEventType.Verbose, 3, "File {0} not found.", "test")
            ' Issue file not found message as information.
            ts.TraceInformation("File {0} not found.", "test")
            ts.Listeners("console").TraceOutputOptions = ts.Listeners("console").TraceOutputOptions Or TraceOptions.LogicalOperationStack
            ' Issue file not found message as an error event.
            ts.TraceEvent(TraceEventType.Error, 4, "File {0} not found.", "test")
            ' Test the filter on the ConsoleTraceListener.
            ts.Listeners("console").Filter = New SourceFilter("No match")
            ts.TraceData(TraceEventType.Error, 5, "SourceFilter should reject this message for the console trace listener.")
            ts.Listeners("console").Filter = New SourceFilter("TraceTest")
            ts.TraceData(TraceEventType.Error, 6, "SourceFilter should let this message through on the console trace listener.")
            ts.Listeners("console").Filter = Nothing
            ' Use the TraceData method. 
            ts.TraceData(TraceEventType.Warning, 7, New Object())
            ts.TraceData(TraceEventType.Warning, 8, New Object() {"Message 1", "Message 2"})
            ' Activity tests.
            ts.TraceEvent(TraceEventType.Start, 9, "Will not appear until the switch is changed.")
            ts.Switch.Level = SourceLevels.ActivityTracing Or SourceLevels.Critical
            ts.TraceEvent(TraceEventType.Suspend, 10, "Switch includes ActivityTracing, this should appear")
            ts.TraceEvent(TraceEventType.Critical, 11, "Switch includes Critical, this should appear")
            Console.WriteLine("Press any key to exit.")
            Console.Read()
        Catch e As Exception
            ' Catch any unexpected exception.
            Console.WriteLine("Unexpected exception: " + e.ToString())
            Console.Read()
        End Try
    
    End Sub 'Main
    
    Public Shared Sub DisplayProperties(ByVal ts As TraceSource) 
        Console.WriteLine("SourceSwitch name = " + ts.Name)
        Console.WriteLine("TraceSource switch level = " + ts.Switch.Level.ToString())
        Console.WriteLine("TraceSource switch = " + ts.Switch.DisplayName.ToString())
        Dim switches As SwitchAttribute() = SwitchAttribute.GetAll([Assembly].GetExecutingAssembly())
        Dim i As Integer
        For i = 0 To switches.Length - 1
            Console.WriteLine("Switch name = " + switches(i).SwitchName.ToString())
            Console.WriteLine("Switch type = " + switches(i).SwitchType.ToString())
        Next i

        #If (ConfigFile)
        ' Get the custom attributes for the TraceSource.
        Console.WriteLine("Number of custom trace source attributes = " + ts.Attributes.Count)
        Dim de As DictionaryEntry
        For Each de In  ts.Attributes
            Console.WriteLine("Custom trace source attribute = " + de.Key + "  " + de.Value)
        Next de
        ' Get the custom attributes for the trace source switch.
        For Each de In ts.Switch.Attributes
            Console.WriteLine("Custom switch attribute = " + de.Key + "  " + de.Value)
        Next de
        #EndIf
        Console.WriteLine("Number of listeners = " + ts.Listeners.Count)
        Dim traceListener As TraceListener
        For Each traceListener In  ts.Listeners
            Console.Write("TraceListener: " + traceListener.Name + vbTab)
            ' The following output can be used to update the configuration file.
            Console.WriteLine("AssemblyQualifiedName = " + traceListener.GetType().AssemblyQualifiedName)
        Next traceListener
    
    End Sub 'DisplayProperties
End Class 'TraceTest 


System.Object
  System.Diagnostics.TraceSource
Los miembros estáticos públicos (Shared en Visual Basic) de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Windows 98, Windows 2000 SP4, Windows Millennium, Windows Server 2003, Windows XP Media Center, Windows XP Professional x64, Windows XP SP2, Windows XP Starter Edition

.NET Framework no admite todas las versiones de cada plataforma. Para obtener una lista de las versiones admitidas, vea Requisitos del sistema.

.NET Framework

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

Adiciones de comunidad

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