0

私はこのハンドラを持っています:

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;
    }

}

ログ Debug-Level が有効になっていない場合、スタック トレースを jvm sterr に出力したくありませんが、このハンドラの直後にスタック トレースが出力されるようにしています...理由を教えてください。

デバッグ テスト中に log.isDebugEnabled() が正しく false であることを確認しました

4

1 に答える 1