Este artigo foi traduzido por máquina. Para visualizar o arquivo em inglês, marque a caixa de seleção Inglês. Você também pode exibir o texto Em inglês em uma janela pop-up, movendo o ponteiro do mouse sobre o texto.
Tradução
Inglês

Classe TraceSource

 

Publicado: agosto de 2016

System_CAPS_noteObservação

The .NET API Reference documentation has a new home. Visit the .NET API Browser on docs.microsoft.com to see the new experience.

Fornece um conjunto de métodos e propriedades que permitem que os aplicativos rastreiem a execução do código e associe mensagens de rastreamento à sua origem.

Namespace:   System.Diagnostics
Assembly:  System (em System.dll)

System.Object
  System.Diagnostics.TraceSource

public class TraceSource

NomeDescrição
System_CAPS_pubmethodTraceSource(String)

Inicializa uma nova instância da classe TraceSource, usando o nome especificado para a fonte.

System_CAPS_pubmethodTraceSource(String, SourceLevels)

Inicializa uma nova instância da classe TraceSource usando o nome especificado para a fonte e o nível da fonte padrão no qual o rastreamento deve ocorrer.

NomeDescrição
System_CAPS_pubpropertyAttributes

Obtém os atributos de opção personalizados definidos no arquivo de configuração de aplicativo.

System_CAPS_pubpropertyListeners

Obtém a coleção de ouvintes de rastreamento para a origem de rastreamento.

System_CAPS_pubpropertyName

Obtém o nome da origem do rastreamento.

System_CAPS_pubpropertySwitch

Obtém ou define o valor da opção de fonte.

NomeDescrição
System_CAPS_pubmethodClose()

Fecha todos os ouvintes de rastreamento na coleção de ouvinte de rastreamento.

System_CAPS_pubmethodEquals(Object)

Determina se o objeto especificado é igual ao objeto atual.(Herdado de Object.)

System_CAPS_protmethodFinalize()

Permite que um objeto tente liberar recursos e executar outras operações de limpeza antes de ser recuperado pela coleta de lixo.(Herdado de Object.)

System_CAPS_pubmethodFlush()

Libera todos os ouvintes de rastreamento na coleção de ouvinte de rastreamento.

System_CAPS_pubmethodGetHashCode()

Serve como a função de hash padrão.(Herdado de Object.)

System_CAPS_protmethodGetSupportedAttributes()

Obtém os atributos personalizados com suporte a origem de rastreamento.

System_CAPS_pubmethodGetType()

Obtém o Type da instância atual.(Herdado de Object.)

System_CAPS_protmethodMemberwiseClone()

Cria uma cópia superficial do Object atual.(Herdado de Object.)

System_CAPS_pubmethodToString()

Retorna uma cadeia de caracteres que representa o objeto atual.(Herdado de Object.)

System_CAPS_pubmethodTraceData(TraceEventType, Int32, Object)

Grava dados de rastreamento para os ouvintes de rastreamento na coleção Listeners usando o tipo de evento, o identificador de evento e os dados de rastreamento especificados.

System_CAPS_pubmethodTraceData(TraceEventType, Int32, Object[])

Grava dados de rastreamento para os ouvintes de rastreamento no Listeners coleção usando o tipo de evento especificado, o identificador de evento e a matriz de dados de rastreamento.

System_CAPS_pubmethodTraceEvent(TraceEventType, Int32)

Grava uma mensagem de evento de rastreamento para os ouvintes de rastreamento na coleção Listeners usando o tipo de evento e o identificador de evento especificados.

System_CAPS_pubmethodTraceEvent(TraceEventType, Int32, String)

Grava uma mensagem de evento de rastreamento para os ouvintes de rastreamento na coleção Listeners usando o tipo de evento, o identificador de evento e a mensagem especificados.

System_CAPS_pubmethodTraceEvent(TraceEventType, Int32, String, Object[])

Grava um evento de rastreamento para os ouvintes de rastreamento na coleção Listeners usando o tipo de evento, o identificador de evento, a matriz de argumentos e o formato especificados.

System_CAPS_pubmethodTraceInformation(String)

Grava uma mensagem informativa para os ouvintes de rastreamento na coleção Listeners usando a mensagem especificada.

System_CAPS_pubmethodTraceInformation(String, Object[])

Grava uma mensagem informativa para os ouvintes de rastreamento no Listeners coleção usando a matriz do objeto especificado e as informações de formatação.

System_CAPS_pubmethodTraceTransfer(Int32, String, Guid)

Grava uma mensagem de transferência de rastreamento nos ouvintes de rastreamento na coleção Listeners usando o identificador numérico especificado, a mensagem e o identificador de atividade relacionada.

A classe TraceSource é usada por aplicativos para produzir rastreamentos que podem ser associados ao aplicativo. TraceSource fornece métodos de rastreamento que permitem rastrear eventos com facilidade, rastrear dados e emitir rastreamentos informativos. Rastreamento de saída de TraceSource podem ser controlados pelo arquivo de configuração. O arquivo de configuração está localizado na pasta com o executável do aplicativo e tem o nome do aplicativo com a extensão de nome de arquivo. config adicionada. Por exemplo, o nome do arquivo de configuração para TraceSourceSample.exe é TraceSourceSample.exe.config. O arquivo de configuração pode ser usado para determinar onde as informações de rastreamento são enviado e quais são os níveis de atividade a ser rastreado. O exemplo a seguir mostra o conteúdo de um arquivo de configuração do aplicativo de exemplo.

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

O TraceSource classe é identificada pelo nome de uma fonte, normalmente o nome do aplicativo. As mensagens de rastreamento provenientes de um componente específico podem ser iniciadas por uma origem de rastreamento específico, permitindo que todas as mensagens recebidas de componente a ser identificados com facilidade.

TraceSourcedefine métodos de rastreamento, mas não fornece realmente qualquer mecanismo específico para gerar e armazenar os dados de rastreamento. Os dados de rastreamento são produzidos pelo ouvintes de rastreamento, que são plug-ins que podem ser carregados por fontes de rastreamento.

System_CAPS_noteObservação

Você não deve chamar os métodos de rastreamento durante a finalização. Isso pode resultar em um ObjectDisposedException que está sendo gerada.

Você pode personalizar o destino da saída de rastreamento adicionando ou removendo TraceListener instâncias ou da coleção armazenados no TraceSource.Listeners propriedade. Por padrão, saída de rastreamento é gerada usando uma instância do DefaultTraceListener classe. O exemplo de arquivo de configuração anterior demonstra a remover o DefaultTraceListener e adicionando um ConsoleTraceListener para produzir a saída de rastreamento para a origem de rastreamento. Para obter mais informações, consulte Elemento < listeners > de < origem > e < SharedListeners > elemento.

System_CAPS_noteObservação

Adicionar um ouvinte de rastreamento para o Listeners coleta pode causar uma exceção seja lançada durante um rastreamento, se um recurso usado pelo ouvinte de rastreamento não está disponível. As condições e a exceção lançada dependem o ouvinte de rastreamento e não podem ser enumerados neste tópico. Pode ser útil fazer chamadas para o TraceSource métodos em try/catch blocos para detectar e lidar com todas as exceções de ouvintes de rastreamento.

O SourceSwitch classe fornece os meios para controlar dinamicamente a saída de rastreamento. O exemplo de arquivo de configuração anterior mostra como você pode desativar o rastreamento de uma origem de rastreamento e controle o nível no qual o rastreamento ocorre. Você pode modificar o valor da opção de origem sem recompilar o aplicativo. Para obter informações sobre como usar o arquivo de configuração para definir uma opção, consulte Switch e Como: criar, inicializar e configurar opções de rastreamento.

System_CAPS_noteObservação

Se você modificar um arquivo de configuração durante a execução de um aplicativo, o aplicativo deve ser interrompido e reiniciado ou o Refresh método deve ser chamado antes que as novas configurações tenham efeito.

O TraceEventType enumeração é usada para definir o tipo de evento da mensagem de rastreamento. Use filtros de rastreamento de TraceEventType para determinar se um ouvinte de rastreamento deve produzir a mensagem de rastreamento.

Os ouvintes de rastreamento, opcionalmente, podem ter uma camada adicional de filtragem por meio de um filtro de rastreamento. Se um ouvinte de rastreamento tiver um filtro associado, o ouvinte chama o ShouldTrace método em que o filtro para determinar se deve ou não produzir as informações de rastreamento.

Os ouvintes de rastreamento usam os valores da Trace propriedades da classe Indent, IndentSize, e AutoFlush para formato de saída de rastreamento. Você pode usar os atributos de arquivo de configuração para definir o Indent, IndentSize, e AutoFlush propriedades. O exemplo a seguir define o AutoFlush propriedade false e IndentSize propriedade 3.

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

O exemplo de código a seguir mostra o uso da TraceSource classe para encaminhar os rastreamentos para ouvintes. O exemplo também demonstra o uso de comutador e filtro.

// 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>
#define TRACE
//#define ConfigFile

using System;
using System.Collections;
using System.Diagnostics;
using System.Reflection;
using System.IO;
using System.Security.Permissions;

namespace Testing
{
    class TraceTest
    {
        // Initialize the trace source.
        static TraceSource ts = new TraceSource("TraceTest");
        [SwitchAttribute("SourceSwitch", typeof(SourceSwitch))]
        static void Main()
        {
            try
            {
                // Initialize trace switches.
#if(!ConfigFile)
                SourceSwitch sourceSwitch = new SourceSwitch("SourceSwitch", "Verbose");
                ts.Switch = sourceSwitch;
                int idxConsole = ts.Listeners.Add(new System.Diagnostics.ConsoleTraceListener());
                ts.Listeners[idxConsole].Name = "console";
#endif
                DisplayProperties(ts);
                ts.Listeners["console"].TraceOutputOptions |= 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 |= 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 = null;
                // 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 | SourceLevels.Critical;
                ts.TraceEvent(TraceEventType.Suspend, 10, "Switch includes ActivityTracing, this should appear");
                ts.TraceEvent(TraceEventType.Critical, 11, "Switch includes Critical, this should appear");
                ts.Flush();
                ts.Close();
                Console.WriteLine("Press any key to exit.");
                Console.Read();
            }
            catch (Exception e)
            {
                // Catch any unexpected exception.
                Console.WriteLine("Unexpected exception: " + e.ToString());
                Console.Read();
            }
        }
        public static void DisplayProperties(TraceSource ts)
        {
            Console.WriteLine("TraceSource name = " + ts.Name);
            Console.WriteLine("TraceSource switch level = " + ts.Switch.Level);
            Console.WriteLine("TraceSource switch = " + ts.Switch.DisplayName);
            SwitchAttribute[] switches = SwitchAttribute.GetAll(typeof(TraceTest).Assembly);
            for (int i = 0; i < switches.Length; i++)
            {
                Console.WriteLine("Switch name = " + switches[i].SwitchName);
                Console.WriteLine("Switch type = " + switches[i].SwitchType);
            }
#if(ConfigFile)
            // Get the custom attributes for the TraceSource.
            Console.WriteLine("Number of custom trace source attributes = "
                + ts.Attributes.Count);
            foreach (DictionaryEntry de in ts.Attributes)
                Console.WriteLine("Custom trace source attribute = "
                    + de.Key + "  " + de.Value);
            // Get the custom attributes for the trace source switch.
            foreach (DictionaryEntry de in ts.Switch.Attributes)
                Console.WriteLine("Custom switch attribute = "
                    + de.Key + "  " + de.Value);
#endif
            Console.WriteLine("Number of listeners = " + ts.Listeners.Count);
            foreach (TraceListener traceListener in ts.Listeners)
            {
                Console.Write("TraceListener: " + traceListener.Name + "\t");
                // The following output can be used to update the configuration file.
                Console.WriteLine("AssemblyQualifiedName = " +
                    (traceListener.GetType().AssemblyQualifiedName));
            }
        }
    }
}

.NET Framework
Disponível desde 2.0

Este tipo é thread-safe.

Retornar ao início
Mostrar: