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

ToString()

Devolve uma cadeia que representa o objeto atual.

(Herdado de Object)

Aplica-se a

Ver também