अधिकांश लॉगिंग फ्रेमवर्क में नेस्टेड डायग्नोस्टिक कॉन्टेक्स्ट<के लिए धारणा होती है। /ए> . जब आप तैयार विवरण भरते हैं तो आप अपनी क्वेरी और उसके मापदंडों को वहां सहेज सकते हैं।
या, शायद, इसे एक चरण में करें:
PreparedStatement fillAndLog(Connection conn, String query, Object... args) {
int i = 0;
PreparedStatement pstmt = conn.prepareStatement(query);
for (Object o : args) {
if (o instanceof String) {
pstmt.setString(i, (String)o);
} // else...
i++;
}
log.debug(String.format(query.replaceAll("\\?", "%s"), args));
return pstmt;
}