Java Spring Boot 不记录异常

标签 java spring-boot logging

我有一个 Spring Boot 休息服务。当我向服务发送请求时,我想记录请求是否成功。如果其余服务成功,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>

例如,当抛出异常时,结果将打印出来:

{"@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 部分

最佳答案

这可能是您的 IDE 抑制了日志条目。我最近在使用 IntelliJ 时遇到了这个问题。检查是否有扩展日志条目的选项

IDE example

在发现扩展日志的选项之前,我最终得到了两个最小的示例项目。一个项目使用了spring + logback,另一个项目只使用了logback。奇怪的是,对于只有 logback 的示例,IntelliJ 没有执行任何抑制。

关于Java Spring Boot 不记录异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54652824/

相关文章:

java - 我可以使用 WebDriver 获取元素的 CSS 属性 "padding"吗?

java - 显示 Runtime.exec() 返回的进程的输出流

java - 你如何用时间解析两位数的年份日期?

mongodb - 使用 Spring Boot 记录 MongoDB 查询

sql-server - 最佳做法-存储过程记录

java - 在扩展 Java 中另一个类的类中有 2 个同名变量

spring-boot - 如何使 Redis 存储库具有事务性

spring - Spring Boot 的 Grails 控制台是什么?

logging - Symfony2 日志中由 "OPTIONS"http 请求引起的 404 错误

java - 简单的 apache 常见记录器