首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >抑制Spring HandlerExceptionResolver中的strack跟踪打印

抑制Spring HandlerExceptionResolver中的strack跟踪打印
EN

Stack Overflow用户
提问于 2013-09-24 15:43:53
回答 1查看 352关注 0票数 0

我有这个处理程序:

代码语言:javascript
复制
public class JsonHandlerExceptionResolver implements HandlerExceptionResolver {

    private static Logger log = Logger.getLogger(JsonHandlerExceptionResolver.class);


    @Override
    @ResponseBody
    public ModelAndView resolveException(HttpServletRequest req, HttpServletResponse response, Object obj, Exception e) {
        Output out=new Output(false);
        out.setException(e.getClass().getName());
        out.setError(e.getLocalizedMessage());
        response.setContentType("application/json");
        log.error(e.getMessage());
        if(log.isDebugEnabled()) e.printStackTrace();
        try{
            response.getWriter().println(new Gson().toJson(new Output(e.getMessage(),e.getClass().getSimpleName())));
            response.getWriter().flush();
            response.getWriter().close();
        }catch (Exception e1) {
            log.error(e1);
            if(log.isDebugEnabled()) e1.printStackTrace();
        }
        return null;
    }

}

在日志调试级别未启用的情况下,我不想将堆栈跟踪打印到jvm sterr,但是我希望在此处理程序之后输出堆栈跟踪...你能告诉我为什么吗?

调试在我的测试中,我看到log.isDebugEnabled()是正确的false

EN

回答 1

Stack Overflow用户

发布于 2013-09-24 16:11:15

确保ANT中的编译目标(如果使用ANT)将debug属性设置为off,如下所示。

代码语言:javascript
复制
<target name="test-compile" depends="compile,test-init">
        <javac destdir="${test.classes.dir}" debug="off" includeantruntime="true" srcdir="${test.dir}">
            <classpath refid="test.compile.classpath">
            </classpath>
        </javac>
    </target>

此外,我还会检查日志记录模式,可能会打印出堆栈错觉。因此,堆栈跟踪将打印在if条件上方的行上,即:

代码语言:javascript
复制
log.error(e1);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18975729

复制
相关文章

相似问题

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