# Rastreamento do cliente da rede

O cliente da rede do Derby fornece facilidade de rastreamento, para coletar informações de rastreamento do JDBC e ver os fluxos do protocolo.

Existem várias maneiras de obter saída de rastreamento. Entretanto, a maneira mais fácil de obter saída de rastreamento é utilizando o atributo `traceFile` na URL no `ij`. O exemplo a seguir mostra o envio de todo o rastreamento para o arquivo `trace.out`, a partir de uma sessão `ij`.

    ij>connect 'jdbc:derby://localhost:1527/meubanco;
    create=true;traceFile=trace.out;user=user1;password=secret4me';

#### Implementação do rastreamento do ClientDataSource

Para coletar dados de rastreamento ao obter conexões usando ClientDataSource, pode ser empregado um dos três métodos a seguir:

- Utilizar o método `setLogWriter(java.io.PrintWriter)` de ClientDataSource, e definir `PrintWriter` com um valor não nulo.
- Utilizar o método `setTraceFile(String filename)` de ClientDataSource.
- Utilizar o método `setTraceDirectory(String dirname)` de ClientDataSource para rastrear cada fluxo de conexão em seu próprio arquivo, em programas que possuem várias conexões.

#### Implementação do rastreamento do DriverManager

Quando se obtém conexões utilizando o `DriverManager`, pode ser empregada uma das duas opções a seguir para habilitar a coleta de informações de rastreamento:

- Utilizar o método `setLogWriter(java.io.PrintWriter)` de `DriverManager`, e definir `PrintWriter` como um valor não nulo.
- Utilizar o atributo da URL `traceFile` ou `traceDirectory` para definir uma destas propriedades, antes de criar a conexão com o método `DriverManager.getConnection()`.

#### Alteração do nível de rastreamento padrão

O nível de rastreamento padrão é `ClientDataSource.TRACE_ALL`. O nível de rastreamento pode ser escolhido chamando o método `setTraceLevel(int level)`, ou definindo o atributo da URL `traceLevel`:

    String url = "jdbc:derby://meuhospedeiro.meudominio.com:1528/meubanco" +
     ";traceFile=/u/user1/trace.out" +
     ";traceLevel=" +
     org.apache.derby.jdbc.ClientDataSource.TRACE_PROTOCOL_FLOWS;
    DriverManager.getConnection(url,"user1","secret4me");

Tabela 1. Níveis de rastreamento disponíveis e seus valores
Nível de rastreamento | Valor
--- | ---
org.apache.derby.jdbc.ClientDataSource.TRACE_NONE | 0x0
org.apache.derby.jdbc.ClientDataSource.TRACE_CONNECTION_CALLS | 0x1
org.apache.derby.jdbc.ClientDataSource.TRACE_STATEMENT_CALLS | 0x2
org.apache.derby.jdbc.ClientDataSource.TRACE_RESULT_SET_CALLS | 0x4
org.apache.derby.jdbc.ClientDataSource.TRACE _DRIVER_CONFIGURATION | 0x10
org.apache.derby.jdbc.ClientDataSource.TRACE_CONNECTS | 0x20
org.apache.derby.jdbc.ClientDataSource.TRACE_PROTOCOL_FLOWS | 0x40
org.apache.derby.jdbc.ClientDataSource.TRACE _RESULT_SET_META_DATA | 0x80
org.apache.derby.jdbc.ClientDataSource.TRACE _PARAMETER_META_DATA | 0x100
org.apache.derby.jdbc.ClientDataSource.TRACE_DIAGNOSTICS | 0x200
org.apache.derby.jdbc.ClientDataSource.TRACE_XA_CALLS | 0x800
org.apache.derby.jdbc.ClientDataSource.TRACE_ALL | 0xFFFFFFFF;

Para especificar mais de um nível de rastreamento, deve ser utilizada uma das seguintes técnicas:

- Utilizar operadores OR bit-a-bit ( | ) entre dois ou mais valores de rastreamento. Por exemplo, para rastrear os fluxos do protocolo e chamadas de conexão deve ser especificado o seguinte valor para traceLevel:

      TRACE_PROTOCOL_FLOWS | TRACE_CONNECTION_CALLS

- Utilizar o operador de complemento bit-a-bit ( ~ ) com o valor de rastreamento para especificar todos, exceto um determinado rastreamento. Por exemplo, para rastrear tudo, exceto os fluxos do protocolo, deve ser especificado o seguinte valor para traceLevel:

      ~TRACE_PROTOCOL_FLOWS

Tópico pai: Acesso ao Network Server utilizando o driver cliente da rede
Conceitos relacionados
Acesso ao Network Server utilizando o Universal Driver do DB2
Referências relacionadas
Segurança do cliente da rede
Exemplos de driver cliente da rede