首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java Spring Boot不记录异常

Java Spring Boot不记录异常
EN

Stack Overflow用户
提问于 2019-02-12 22:53:46
回答 2查看 11K关注 0票数 4

我有一个spring boot rest服务。当我向服务发送请求时,我希望记录请求是否成功。如果rest服务成功,logger.info (任何记录器都会被记录,即使是logger.error)也会被记录到控制台。但是,当抛出SQL异常时,它不会将logger.error部分记录到控制台。如果抛出异常,它还会将该部分记录到控制台中,我该如何获取它?

下面是测试方法:

代码语言:javascript
复制
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文件:

代码语言:javascript
复制
<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>

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

代码语言:javascript
复制
{"@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部分

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-02-12 23:01:04

要启用日志记录,请在资源文件夹的根目录下创建一个application.properties文件,并且需要在application.properties中添加日志记录级别

代码语言:javascript
复制
logging.level.org.springframework.web=ERROR
logging.level.com.mkyong=DEBUG

或者将它们添加到您的logback.xml中

代码语言:javascript
复制
    <logger name="com.mkyong" level="debug"
        additivity="false">
        <appender-ref ref="FILE-AUDIT" />
    </logger>

    <root level="error">
        <appender-ref ref="FILE-AUDIT" />
    </root>
票数 4
EN

Stack Overflow用户

发布于 2019-09-06 18:06:27

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

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

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54652824

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档