JDBC
Enabling Logging
There are two ways in which you can enable JDBC logging:
- In the driver's property file.
- Using the system properties.
Note
Logging can also be programmed into a Java application, applet or servlet, so some or all of the logging features described below may also be provided by your application - refer to your application documentation for details.
Six property values may be used to control driver tracing.
logLevel
This controls the level of diagnostic information that will be logged on the client. It must be set to one of the following values:
PANIC
ALERT
WARNING
NOTICE
INFO
DEBUG
The default is NOTICE
.
logOptions
This option applies additional tracing information if
required; for example, the calling method or thread name. It can be set to one
or both of the values METHODS
and THREADS
. The default is
NONE
.
logModules
This option controls which modules are to be traced. It can be set to any combination of the following values:
SERVER
DDA
CONNECTION
DATABASEMETADATA
STATEMENT
PREPAREDSTATEMENT
CALLABLESTATEMENT
RESULTSETMETADATA
RESULTSET
ALLMODS
The default is
NONE
.
hostOption
This controls the type of diagnostic information that will be logged on the host. It can be set to any of the following values:
0
= None1
= Log input2
= Log output3
= Log input and output
hostItemName
This specifies the name of item created in the host logging file. The default cycles through 1 to 9.
Note
When combining values, you must use a vertical bar (|) as a separator; for example:
logOptions=METHODS|THREADS
Client log output is normally displayed on the screen. Your application may provide a way to route the log to a file.
Host log output is saved in the file SQLSRVLOG in the account that the server id logged on to.
Property File
The JDBC driver's property file is called realsql.properties and can be found in the subdirectory com/northgateis/reality/realsql in the directory where you installed the JDBC driver.
Within the realsql.properties file, properties are set by specifying the name of the property, followed by an equals sign and the required value. One property must appear on each line. For example:
logLevel=ALERT
logOptions=
logModules=STATEMENT|RESULTSET
hostOption=2
Using the System Properties to Configure Logging
System properties are set from the command line when calling a java application, by using the -D option. For example:
java myapp -Dcom.northgateis.reality.realsql.logModules=ALLMODS
This example sets the default logging level on all modules from the system properties:
Example Log Output
In the following example, the following property value have been set:
logLevel=DEBUG
logOptions=METHODS
logModules=DRIVER|CONNECTION
The example below shows the information displayed on the screen when selecting all the rows in an SQL table called emp. Note that the log output is interspersed with the normal screen display.
DriverManager.initialize: jdbc.drivers = null JDBC DriverManager initialized registerDriver: driver[className=com.northgateis.reality.realsql.RealSQLDriver,com.northgateis.reality.realsql.RealSQLDriver @b2990e61 DriverManager.getConnection("jdbc:realsql://magpie:1203/R82A") trying driver[className=com.northgateis.reality.realsql.RealSQLDriver,com.northgateis.reality.realsql.RealSQLDriver @b2990e61] NOTICE com.northgateis.reality.realsql.RealSQLConnection.RealSQLConnection(): Assigned logging level of 0x40120 NOTICE com.northgateis.reality.realsql.RealSQLConnection.connection():Creating connection to magpie:1203/R82A user=ajt NOTICE com.northgateis.reality.realsql.RealSQLConnection.isClosed(): false NOTICE com.northgateis.reality.realsql.RealSQLConnection.setCatalog(): Catalog name "R82A" NOTICE com.northgateis.reality.realsql.RealSQLConnection.RealSQLConnection():Starting thread for database connection. NOTICE com.northgateis.reality.realsql.RealSQLConnection.createStatement():ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY. NOTICE com.northgateis.reality.realsql.RealSQLConnection.isClosed(): false NOTICE com.northgateis.reality.realsql.RealSQLConnection.createStatement():type = 1003, concur = 1007 NOTICE com.northgateis.reality.realsql.RealSQLConnection.isClosed(): false executeQuery(SELECT * FROM EMP) Ok! EMPNO...... ENAME..... TITLE.... MGR........ HIREDATE.. SAL...... COMM..... DEPTNO..... 8698 ARCHER MANAGER 8839 1982-12-22 3750.00 90030 8788 KELLY ANALYST 8566 1984-07-31 3900.00 90020 8369 CALLAGHAN CLERK 8902 1982-08-09 1700.00 90020 8499 HARRIS SALESREP 8698 1982-10-13 2500.00 300.00 90030 8839 JENSEN PRESIDENT 1983-07-10 5900.00 90010 8900 CUTLER CLERK 8698 1983-07-26 1850.00 90030 8521 TAYLOR SALESREP 8698 1982-10-15 2190.00 500.00 90030 8671 THOMAS SECRETARY 8839 1984-02-15 1950.00 90010 8782 WILSON MANAGER 8839 1983-01-30 3350.00 90010 8902 OLSEN ANALYST 8566 1983-07-26 3900.00 90020 8654 MCBRIDE SALESREP 8698 1983-05-21 2150.00 1400.00 90030 8844 HERMAN SALESREP 8698 1983-05-01 2400.00 90030 8934 DOUGLAS CLERK 8782 1983-09-15 2200.00 90010 8566 CUSTER MANAGER 8839 1982-11-22 3875.00 90020 8876 CROSS CLERK 8788 1984-09-03 2000.00 90020 15 Rows listed. NOTICE com.northgateis.reality.realsql.RealSQLConnection.clean(): Number of open statements 1 DEBUG com.northgateis.reality.realsql.RealSQLConnection.clean(): Cleaned 1 statements. NOTICE com.northgateis.reality.realsql.RealSQLConnection.close(): Closing connection to null/null