Both JDBC drivers and the
DriverManager use the
PrintWriter for logging/tracing. Using
java.util.Logger as your logging/tracing tool allows you to take advantage of the Logging framework.
Create an adapter class to redirect the log messages to java.util.Logging.
// Adapter class to redirect the logging/tracing statements from the
// PrintWriter to the Logger.
public class JDBCLogWriter extends Writer
{
private final Logger myLogger;
private final Level myLogLevel;
public JDBCLogWriter(Logger logger)
{
this(logger, Level.INFO);
}
// Initialize the log writer
public JDBCLogWriter(Logger logger, Level level)
{
myLogger = logger;
myLogLevel = level;
}
// Redirect the log to the logger.
@Override
public void write(char[] cbuf, int off, int len) throws IOException
{
myLogger.log(myLogLevel, new String(cbuf, off, len));
}
@Override
public void flush() throws IOException
{
}
@Override
public void close() throws IOException
{
}
public static void main(String[] args) throws Exception
{
// Set the log writer by using the JDBCLogWriter
DriverManager.setLogWriter(new PrintWriter(new JDBCLogWriter(
Logger.getLogger("database"))));
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
}