TraceSwitch Classe

Definição

Fornece um comutador multinível para controlar o rastreio e a saída de depuração sem recompilar o seu código.

public ref class TraceSwitch : System::Diagnostics::Switch
public class TraceSwitch : System.Diagnostics.Switch
type TraceSwitch = class
    inherit Switch
Public Class TraceSwitch
Inherits Switch
Herança
TraceSwitch

Exemplos

O exemplo de código seguinte cria um novo TraceSwitch e usa o interruptor para determinar se deve imprimir mensagens de erro. A troca é criada ao nível da turma. MyMethod escreve a primeira mensagem de erro se a Level propriedade estiver definida como TraceLevel.Error ou superior. No entanto, MyMethod não escreve a segunda mensagem de erro se o Level for menor que TraceLevel.Verbose.

//Class-level declaration.
/* Create a TraceSwitch to use in the entire application.*/
static TraceSwitch mySwitch = new TraceSwitch("General", "Entire Application");

static public void MyMethod()
{
    // Write the message if the TraceSwitch level is set to Error or higher.
    if (mySwitch.TraceError)
        Console.WriteLine("My error message.");

    // Write the message if the TraceSwitch level is set to Verbose.
    if (mySwitch.TraceVerbose)
        Console.WriteLine("My second error message.");
}

public static void Main(string[] args)
{
    // Run the method that prints error messages based on the switch level.
    MyMethod();
}
' Class-level declaration.
' Create a TraceSwitch to use in the entire application. 
Private Shared mySwitch As New TraceSwitch("General", "Entire Application")    

Public Shared Sub MyMethod()
    ' Write the message if the TraceSwitch level is set to Error or higher.
    If mySwitch.TraceError Then
        Console.WriteLine("My error message.")
    End If 
    ' Write the message if the TraceSwitch level is set to Verbose.
    If mySwitch.TraceVerbose Then
        Console.WriteLine("My second error message.")
    End If
End Sub

Public Shared Sub Main()
    ' Run the method that prints error messages based on the switch level.
    MyMethod()
End Sub

Observações

Pode usar um interruptor de rastreamento para filtrar mensagens com base na sua importância. A TraceSwitch classe fornece as TraceErrorpropriedades , TraceWarning, TraceInfo, e TraceVerbose para testar o nível do comutador. A Level propriedade obtém ou define o TraceLevelinterruptor de .

Podes criar um TraceSwitch no teu código e definir o nível diretamente para instrumentar uma secção específica do código.

Apenas em aplicações .NET Framework, também podes definir o nível de um TraceSwitch através do ficheiro de configuração da aplicação e depois usar o nível TraceSwitch configurado na tua aplicação. No ficheiro de configuração da aplicação, pode adicionar ou remover um interruptor, definir o valor de um interruptor ou limpar todos os interruptores previamente definidos pela aplicação. O ficheiro de configuração deve ser formatado como o seguinte exemplo:

<configuration>
  <system.diagnostics>
    <switches>
      <add name="mySwitch" value="1" />
    </switches>
  </system.diagnostics>
</configuration>

Esta secção de configuração define a TraceSwitch com o DisplayName conjunto a mySwitch, e o Level conjunto a 1, que corresponde ao valor TraceLevel.Errorde enumeração .

Note

Também podes usar texto para especificar o valor de um interruptor. Por exemplo, true para um BooleanSwitch, ou o texto que representa um valor de enumeração, como Error para um TraceSwitch. A reta <add name="mySwitch" value="Error" /> é equivalente a <add name="mySwitch" value="1" />.

Na sua aplicação, pode usar o nível do switch configurado criando um TraceSwitch com o mesmo nome, como mostrado no exemplo seguinte:

private static TraceSwitch appSwitch = new TraceSwitch("mySwitch",
    "Switch in config file");

public static void Main(string[] args)
{
    //...
    Console.WriteLine("Trace switch {0} configured as {1}",
    appSwitch.DisplayName, appSwitch.Level.ToString());
    if (appSwitch.TraceError)
    {
        //...
    }
}
Private Shared appSwitch As new TraceSwitch("mySwitch", _
    "Switch in config file")

Public Shared Sub Main(args As String())
    '...
    Console.WriteLine("Trace switch {0} configured as {1}",
    appSwitch.DisplayName, appSwitch.Level.ToString())
    If appSwitch.TraceError = True  Then
        '...
    End If
End Sub

Na .NET Core e .NET aplicações 5+, o Level da nova Switch passa por defeito a TraceLevel.Off.

Nas aplicações .NET Framework, a propriedade switch Level tem por defeito o valor especificado no ficheiro de configuração. Se o TraceSwitch construtor não conseguir encontrar as definições iniciais do comutador no ficheiro de configuração, Level o novo comutador por defeito é TraceLevel.Off.

Tens de ativar o rastreamento ou depuração para usar um switch. A sintaxe seguinte é específica do compilador. Se usar compiladores que não sejam C# ou Visual Basic, consulte a documentação do seu compilador.

  • Para permitir a depuração em C#, adicione a /d:DEBUG flag à linha de comandos do compilador quando compilar o seu código, ou adicione #define DEBUG no topo do seu ficheiro. Em Visual Basic, adicione a flag /d:DEBUG=True à linha de comandos do compilador.

  • Para ativar o traçado em C#, adicione a /d:TRACE flag à linha de comandos do compilador quando compilar o seu código, ou adicione #define TRACE no topo do seu ficheiro. Em Visual Basic, adicione a flag /d:TRACE=True à linha de comandos do compilador.

Note

Estes comutadores de compilador de depuração e traço não são necessários quando a classe é usada TraceSwitch isoladamente. São apenas exigidos em conjunto com Trace ou Debug métodos que sejam compilados condicionalmente.

Para mais informações sobre a instrumentação da sua aplicação, consulte Debug e Trace. Para mais informações sobre a configuração e utilização de comutadores de traço, consulte Comutadores de Traço.

Note

Para melhorar o desempenho, pode criar TraceSwitch membros static na sua turma.

Construtores

Name Description
TraceSwitch(String, String, String)

Inicializa uma nova instância da TraceSwitch classe, usando o nome de visualização, descrição e valor padrão especificados para o switch.

TraceSwitch(String, String)

Inicializa uma nova instância da TraceSwitch classe, usando o nome de exibição e a descrição especificados.

Propriedades

Name Description
Attributes

Obtém os atributos personalizados do switch definidos no ficheiro de configuração da aplicação.

(Herdado de Switch)
DefaultValue

Recebe o valor padrão atribuído no construtor.

(Herdado de Switch)
Description

Recebe uma descrição da mudança.

(Herdado de Switch)
DisplayName

Recebe um nome usado para identificar o interruptor.

(Herdado de Switch)
Level

Obtém ou define o nível de traço que determina as mensagens que o switch permite.

SwitchSetting

Obtém ou define a configuração atual deste interruptor.

(Herdado de Switch)
TraceError

Recebe um valor que indica se o interruptor permite mensagens de tratamento de erros.

TraceInfo

Recebe um valor que indica se o interruptor permite mensagens informativas.

TraceVerbose

Recebe um valor que indica se o interruptor permite todas as mensagens.

TraceWarning

Recebe um valor que indica se o interruptor permite mensagens de aviso.

Value

Obtém ou define o valor do interruptor.

(Herdado de Switch)

Métodos

Name Description
Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetHashCode()

Serve como função de hash predefinida.

(Herdado de Object)
GetSupportedAttributes()

Obtém os atributos personalizados suportados pelo switch.

(Herdado de Switch)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
MemberwiseClone()

Cria uma cópia superficial do atual Object.

(Herdado de Object)
OnSwitchSettingChanged()

Atualiza e corrige o nível para esta mudança.

OnValueChanged()

Define a SwitchSetting propriedade para o equivalente inteiro da Value propriedade.

Refresh()

Atualiza os dados de configuração do traço.

(Herdado de Switch)
ToString()

Devolve uma cadeia que representa o objeto atual.

(Herdado de Object)

Aplica-se a

Ver também