package io.dropwizard.jdbi.jersey;
import com.google.common.annotations.VisibleForTesting;
import io.dropwizard.jersey.errors.LoggingExceptionMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.ws.rs.ext.Provider;
import java.sql.SQLException;
Iterates through SQLExceptions to log all causes
/**
* Iterates through SQLExceptions to log all causes
*/
@Provider
public class LoggingSQLExceptionMapper extends LoggingExceptionMapper<SQLException> {
private static Logger logger = LoggerFactory.getLogger(LoggingSQLExceptionMapper.class);
@Override
protected void logException(long id, SQLException exception) {
final String message = formatLogMessage(id, exception);
for (Throwable throwable : exception) {
logger.error(message, throwable);
}
}
@VisibleForTesting
static synchronized void setLogger(Logger newLogger) {
logger = newLogger;
}
}