使用oracle jdbc驱动程序从JUL到SLF4j
我试图重定向oracle jdbc驱动程序和oracle ucp(通用连接池)库记录的java.util.logging消息,但无法重定向使用oracle jdbc驱动程序从JUL到SLF4j,oracle,jdbc,slf4j,java.util.logging,Oracle,Jdbc,Slf4j,Java.util.logging,我试图重定向oracle jdbc驱动程序和oracle ucp(通用连接池)库记录的java.util.logging消息,但无法重定向 我的应用程序使用JUL记录的消息会被记录,但oracle库记录的消息不会被记录 我的意图是将JUL消息重定向到Logback,以便通过配置进行更细粒度的日志记录。i、 e.在类级别而不是包级别启用日志记录,我认为这在JUL配置(java.util.config文件)中是不可能的 下面是示例测试代码。你对以上两点有什么建议吗 import oracle.uc
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;
}
}
这是一个完全混乱的局面,在我进行了一些日志记录之后,它仍然不能很好地工作 首先,您肯定需要使用jar的“\g”版本,即使用debug选项编译的jar,并打开日志记录。如果你不使用这个驱动程序,那就像从石头上取血一样 其次,您需要添加java参数
-Doracle.jdbc.Trace=true
第三,需要在日志文件(如logback.xml)中定义包:
请让我知道您是否解决了问题,如何解决,以及这些问题是否合理。在这个特定的问题上,所有的网站上都有一些不好的和相互矛盾的评论。这是一个完全混乱的局面,在我得到一些日志后,它仍然不能很好地工作 首先,您肯定需要使用jar的“\g”版本,即使用debug选项编译的jar,并打开日志记录。如果你不使用这个驱动程序,那就像从石头上取血一样 其次,您需要添加java参数
-Doracle.jdbc.Trace=true
第三,需要在日志文件(如logback.xml)中定义包:
请让我知道您是否解决了问题,如何解决,以及这些问题是否合理。在这个特定的问题上,所有的网站上都有不好的和相互矛盾的评论。如果有帮助的话。我在Spring引导应用程序中采用了这种方法,使用了驱动程序jar文件的
ojdbc\u g
版本:
system.setProperty(“oracle.jdbc.Trace”,“true”)
“oracle.jdbc”
JUL记录器的级别:
Logger ol = Logger.getLogger("oracle.jdbc");
ol.setLevel(Level.FINE);
剩下的部分将是找出如何将JUL日志记录级别映射到SLF4J日志记录级别
在我的Spring boot应用程序中工作。干杯 如果有帮助的话。我在Spring引导应用程序中采用了这种方法,使用了驱动程序jar文件的
ojdbc\u g
版本:
system.setProperty(“oracle.jdbc.Trace”,“true”)
“oracle.jdbc”
JUL记录器的级别:
Logger ol = Logger.getLogger("oracle.jdbc");
ol.setLevel(Level.FINE);
剩下的部分将是找出如何将JUL日志记录级别映射到SLF4J日志记录级别
在我的Spring boot应用程序中工作。干杯
Logger ol = Logger.getLogger("oracle.jdbc");
ol.setLevel(Level.FINE);