There are various ways to obtain trace output. However, the easiest
way to obtain trace output is to use the traceFile attribute
on the URL in ij. The following example shows all tracing
going to the file trace.out from an ij session.ij>connect 'jdbc:derby://localhost:1527/mydb;
create=true;traceFile=trace.out;user=user1;password=secret4me';
Implementing ClientDataSource tracingYou can use
one of three methods to collect tracing data while obtaining connections from
the ClientDataSource:
- Use the setLogWriter(java.io.PrintWriter) method of ClientDataSource
and set the PrintWriter to a non-null value.
- Use the setTraceFile(String filename) method of ClientDataSource.
- Use the setTraceDirectory(String dirname) method of ClientDataSource
to trace each connection flow in its own file for programs that have multiple
connections.
Implementing DriverManager tracingUse one of the
following two options to enable and collect tracing information while obtaining
connections using the DriverManager:
- Use the setLogWriter(java.io.PrintWriter) method of DriverManager
and set the PrintWriter to a non null-value.
- Use the traceFile or traceDirectory URL
attributes to set these properties prior to creating the connection with the DriverManager.getConnection() method.
Changing the default trace levelThe default trace
level is ClientDataSource.TRACE_ALL. You can choose the tracing
level by calling the setTraceLevel(int level) method or by
setting the traceLevel URL attribute:String url = "jdbc:derby://samplehost.sampledomain.com:1528/mydb" +
";traceFile=/u/user1/trace.out" +
";traceLevel=" +
org.apache.derby.jdbc.ClientDataSource.TRACE_PROTOCOL_FLOWS;
DriverManager.getConnection(url,"user1","secret4me");
Available
tracing levels and values
Trace level
Value
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;
To specify more than one trace level, use one of the following techniques:
- Use bitwise OR operators ( | ) with two or more trace values. For example,
to trace PROTOCOL flows and connection calls, specify this value for traceLevel:TRACE_PROTOCOL_FLOWS | TRACE_CONNECTION_CALLS
- Use a bitwise complement operator ( ~ ) with a trace value to specify
all except a certain trace. For example, to trace everything except PROTOCOL
flows, specify this value for traceLevel:~TRACE_PROTOCOL_FLOWS