我正在使用像这样的准备好的声明
PreparedStatement pstmt = getConnection().prepareStatement(INSERT_QUERY);
pstmt.setInt(1,userDetails.getUsersId());
log.debug("SQL for inserting child transactions " + pstmt.toString());
我想在绑定到日志文件后记录确切的SQL语句但是这个东西不起作用。它记录的内容类似于SQLServerPreparedStatement:7
。我在互联网上搜索但没有得到满意的答案。任何帮助将不胜感激。
答案 0 :(得分:0)
您可以尝试通过在DriverManager上设置PrintWriter来启用JDBC内部日志记录。 Log4j2提供IO Streams module,因此您可以将输出包含在普通日志文件中。示例代码:
PrintWriter logger = IoBuilder.forLogger(DriverManager.class)
.setLevel(Level.DEBUG)
.buildPrintWriter();
DriverManager.setLogWriter(logger);
此外,各个JDBC驱动程序通常提供专有的日志记录机制,通常使用系统属性启用。您需要查阅特定驱动程序的文档以获取详细信息。
答案 1 :(得分:-1)
你可以写一个实用功能,它将取代'?'使用绑定变量。