log4jdbcで設定したはずなのに有効にならない場合

log4jdbcのjarを依存ライブラリに入れて、jdbc urlにlog4jdbcを入れたのにlog4jdbcが有効にならない場合がある。
DriverManagerがDBへのコネクションを作成するときにlog4jdbcで使用されているロガー類がすべて無効化されている場合にはlog4jdbcがラッパーを作成せずに、log4jdbcでのログ出力が行われない。
https://github.com/arthurblake/log4jdbc/blob/master/src-jdbc4/net/sf/log4jdbc/DriverSpy.java#L740-L760
https://github.com/arthurblake/log4jdbc/blob/master/src-jdbc4/net/sf/log4jdbc/Slf4jSpyLogDelegator.java#L90-L95

これは、起動時にログ設定を無効化していて、起動後に改めてログ設定を正しいものに変更するかつコネクションプールを使用して初期にまとめてコネクションが取得される場合に問題となることがある。というか、なった。

なお、この挙動はlog4jdbcではSlf4jSpyLogDelegatorクラスで定義されているが、外側から入れ替える手段が存在しないため、問題がある場合はlog4jdbc互換のほかのラッパーを使用する必要がある。

たとえば、log4jdbc-log4j2は入れ替える手段があるらしい。
http://qiita.com/ksby/items/7a2cb97215b252bf41b1

それにしても、log4jdbc系はいろいろ亜流があって何がなんだかわからないですな・・・・・・