У меня есть служба весенней загрузки.Когда я отправляю запрос в сервис, я хотел бы узнать, был ли он успешным или нет.Если остальные службы успешно, logger.info (любой регистратор будет зарегистрирован, даже logger.error) будет зарегистрирован на консоли.Однако, когда выдается исключение SQL, он не записывает часть logger.error в консоль.Как мне получить его, чтобы при возникновении исключения он также записывал эту часть в консоль?
Вот метод теста:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory
public String testMethod(){
try{
LOGGER.info("running test method");
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection test = DriverManager.getConnection(
datasourceUrl,datasourceUsername,datasourcePassword);
//Select data
Statement stmt = test.createStatement();
InputStream input = getClass().getResourceAsStream("/testMethodSQL.sql");
String insertTableSQL = IOUtils.toString(input);
PreparedStatement preparedStatement = prod.prepareStatement(insertTableSQL);
ResultSet rs = preparedStatement.executeQuery();
}
test.close();
LOGGER.info("test Method successfully ran");
return "Done";
}
catch (Exception e) {
e.printStackTrace();
LOGGER.error("Error found: {}", e);
return "An error occured: " + e;
}
}
Вот мой файл logback.xml:
<configuration>
<appender name="Console" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="net.logstash.logback.encoder.LogstashEncoder">
</encoder>
</appender>
<root level="info">
<appender-ref ref="Console" />
</root>
</configuration>
Например, если выброшено исключение, результаты будут напечатаныout:
{"@timestamp":"2019-02-12T10:07:05.989-05:00","@version":1,"message":"running test method","logger_name":"com.test","thread_name":"http-nio-8080-exec-2","level":"INFO","level_value":20000,"RequestId":"6D71709D5A1A4C83876B68A661D696E3"}
java.sql.SQLIntegrityConstraintViolationException: ORA-00001: unique constraint (TEST_TABLE.SYS_C0013283) violated
Однако он не регистрирует часть Logger.error