Spring logback:记录未捕获的异常

时间:2014-07-10 00:00:19

标签: spring logback

我想通过log back捕获未捕获的异常,以涵盖以下情况:

@Controller
@RequestMapping("/dev")
public class DevController {

    private static final Logger log = LoggerFactory.getLogger(DevController.class);

    @ResponseBody
    @RequestMapping(value = "/crash", method = RequestMethod.GET)
    public String crash() {

        int i = 1/0;

        return  "CRASH FINISHED " + i;
    }
}

我当前的回溯配置是:

<configuration debug="true"> 

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} %-5level %logger{50}:%L - %msg%n</pattern>
        </encoder>
    </appender>

    <appender name="FILE" class="ch.qos.logback.core.FileAppender">
        <file>/tmp/startgate.log</file>
        <append>true</append>
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} %-5level %logger{50}:%L - %msg%n</pattern>
        </encoder>
    </appender>

    <appender name="EMAIL" class="ch.qos.logback.classic.net.SMTPAppender">
        <smtpHost>localhost</smtpHost>
        <to>randomemail@randomdomain.com</to>
        <from>randomemail@randomdomain.com</from>
        <subject>LIVE ERROR: %logger{20} - %m</subject>
        <layout class="ch.qos.logback.classic.PatternLayout">
            <pattern>%date %-5level %logger{35} - %message%n</pattern>
        </layout>
    </appender>

    <if condition='property("ENVIRONMENT").contains("DEVELOPMENT")'>
        <then>
            <root level="INFO">
                <appender-ref ref="STDOUT" />
                <appender-ref ref="FILE" />
            </root>
        </then>
    </if>

    <if condition='property("ENVIRONMENT").contains("PRODUCTION")'>
        <then>
            <root level="ERROR">
                <appender-ref ref="EMAIL" />
            </root>
        </then>
    </if>

</configuration>

我如何能够捕获未捕获的错误?

修改 我个人有兴趣通过电子邮件发送此类错误。显然,最好的方法是使用全局异常处理程序。这里有一个教程:http://spring.io/blog/2013/11/01/exception-handling-in-spring-mvc

0 个答案:

没有答案