Package org.jdbi.v3.core.statement
Interface SqlLogger
- All Known Implementing Classes:
Slf4JSqlLogger
public interface SqlLogger
SqlLoggers receive query data before and after a query is executed, and after an exception is thrown by a bad query.
Defined attributes (see
Configurable.define(String, Object)) and bound Arguments (see SqlStatement.bind(String, Object)) are available on the StatementContext, along with timing information using Instants. It's recommendable to use ChronoUnit.between(java.time.temporal.Temporal, java.time.temporal.Temporal) to measure elapsed time in your unit of choice, as in StatementContext.getElapsedTime(java.time.temporal.ChronoUnit).
Note that if you bind an Argument instance directly, it must implement Object.toString() if you want to be able to log it in any meaningful way. You can also implement log censorship that way, e.g. to hide sensitive content like passwords.-
Field Summary
Fields -
Method Summary
Modifier and TypeMethodDescriptiondefault voidlogAfterExecution(StatementContext context) Will be called after a query has been executed.default voidlogBeforeExecution(StatementContext context) Will be called before a query is executed.default voidlogException(StatementContext context, SQLException ex) Will be called after a query has failed.
-
Field Details
-
NOP_SQL_LOGGER
-
-
Method Details
-
logBeforeExecution
Will be called before a query is executed. Note that no timing information will be available in theStatementContextyet.- Parameters:
context- the statement context
-
logAfterExecution
Will be called after a query has been executed. TheStatementContextwill contain a startStatementContext.getExecutionMoment()and endStatementContext.getCompletionMoment()time.- Parameters:
context- the statement context
-
logException
Will be called after a query has failed. TheStatementContextwill contain a startStatementContext.getExecutionMoment()and failureStatementContext.getExceptionMoment()time.- Parameters:
context- the statement contextex- the exception
-