oraclejdbcドライバーとoracleucp(ユニバーサル接続プール)ライブラリによってログに記録されたjava.util.loggingメッセージをリダイレクトしようとしていますが、リダイレクトできません。
- JULを使用してアプリケーションによってログに記録されたメッセージはログに記録されますが、oracleライブラリによってログに記録されたメッセージはログに記録されません。
- ここでの私の意図は、JULメッセージをLogbackにリダイレクトして、構成を通じてよりきめ細かいロギングを行うことです。つまり、JUL構成(java.util.configファイル)では不可能だと思うパッケージレベルではなく、クラスレベルでログを有効にすることができます。
以下はサンプルテストコードです。上記の2点について何か提案はありますか?
import oracle.ucp.jdbc.PoolDataSourceImpl;
import org.slf4j.bridge.SLF4JBridgeHandler;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;
import java.util.logging.Logger;
public class JavaUtilToSlf4jApp {
private static Logger logger = Logger.getLogger(JavaUtilToSlf4jApp.class.getName());
public static void main(String[] args) {
SLF4JBridgeHandler.install();
startConnectionPool();
logger.info("Info Message");
}
private static void startConnectionPool() {
PoolDataSourceImpl pds = new PoolDataSourceImpl();
try {
pds.setConnectionPoolName("Pool Name");
pds.setConnectionFactoryClassName("oracle.jdbc.pool.OracleDataSource");
pds.setConnectionFactoryProperties(getOracleDataSourceProperties());
pds.setDataSourceName("Datasource Name");
pds.setServerName("machine-name");
pds.setPortNumber(1521);
pds.setMinPoolSize(1);
pds.setMaxPoolSize(1);
pds.setMaxIdleTime(1800);
pds.setValidateConnectionOnBorrow(true);
pds.setUser("user");
pds.setPassword("password");
pds.startPool();
} catch (SQLException e) {
throw new RuntimeException("Cannot create project datasource ", e);
}
try {
Connection connection = pds.getConnection();
} catch (SQLException e) {
throw new RuntimeException(e);
}
logger.info("Connection established");
}
private static Properties getOracleDataSourceProperties() {
Properties p = new Properties();
p.put("driverType", "oci");
p.put("networkProtocol", "tcp");
p.put("serviceName", "servicename");
return p;
}
}