Hi All,

In am now developing some fancy JDBC proprietary do-hicky at work.

In JDBC, you log to a java.io.PrintWriter like this:

// for all drivers
DriverManager.setLogWriter(printWriter);

// for a specific driver (if that driver support it).
dataSource.setLogWriter(printWriter);

I want logging to go to Log4j 2. Granted, I've got no control with levels
but at least I could give it a (single) level (see below) and, as usual, if
I want the target to be the console or a file and do rollovers and such.

I could see wrapping a PW and then giving that to JDBC and Log4j somehow:

log4jPw = new Log4jPrintWriter(logger, Level.DEBUG);

... someLog4jObject.addEventSource(log4jPw);

DriverManager.setLogWriter(log4jPw);
// or
dataSource.setLogWriter(log4jPw);

The PW would buffer until it gets a println() or the buffer reaches some
size limit, then turns its buffer into log event.

Also, JDBC 4.1 in Java 7 has some integration with JUL with
javax.sql.CommonDataSource.getParentLogger() but each driver has to support
that.

My requirements look like a perfect match with log4j2-547 and it looks like
Bruce put a lot of work in there.

So I am going to experiment to bring that code base in.

Thoughts?

Gary

-- 
E-Mail: [email protected] | [email protected]
Java Persistence with Hibernate, Second Edition
<http://www.manning.com/bauer3/>
JUnit in Action, Second Edition <http://www.manning.com/tahchiev/>
Spring Batch in Action <http://www.manning.com/templier/>
Blog: http://garygregory.wordpress.com
Home: http://garygregory.com/
Tweet! http://twitter.com/GaryGregory

Reply via email to