James 7 年 前
コミット
2af31622e5

+ 12 - 3
src/main/java/com/jfinal/core/ActionException.java

@@ -19,7 +19,7 @@ package com.jfinal.core;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import com.jfinal.kit.StrKit;
-import com.jfinal.log.Log;
+// import com.jfinal.log.Log;
 import com.jfinal.render.Render;
 import com.jfinal.render.RenderManager;
 
@@ -29,7 +29,7 @@ import com.jfinal.render.RenderManager;
 public class ActionException extends RuntimeException {
 	
 	private static final long serialVersionUID = 1998063243843477017L;
-	private static final Log log = Log.getLog(ActionException.class);
+	// private static final Log log = Log.getLog(ActionException.class);
 	private int errorCode;
 	private Render errorRender;
 	
@@ -74,7 +74,7 @@ public class ActionException extends RuntimeException {
 	public ActionException(int errorCode, Render errorRender, String errorMessage) {
 		super(errorMessage);
 		init(errorCode, errorRender);
-		log.warn(errorMessage);
+		// log.warn(errorMessage);		// ActionHandler 中添加了对 message 的日志输出
 	}
 	
 	public int getErrorCode() {
@@ -84,5 +84,14 @@ public class ActionException extends RuntimeException {
 	public Render getErrorRender() {
 		return errorRender;
 	}
+	
+	/**
+	 * 异常构造函数会调用 fillInStackTrace() 构建整个调用栈,消耗较大
+	 * 而 ActionException 无需使用调用栈信息,覆盖此方法用于提升性能
+	 */
+	@Override
+	public Throwable fillInStackTrace() {
+		return this;
+	}
 }
 

+ 6 - 2
src/main/java/com/jfinal/core/ActionHandler.java

@@ -148,12 +148,16 @@ public class ActionHandler extends Handler {
 		if (msg != null) {
 			if (log.isWarnEnabled()) {
 				String qs = request.getQueryString();
-				log.warn(msg + (qs == null ? target : target + "?" + qs));
+				msg = msg + (qs == null ? target : target + "?" + qs);
+				if (e.getMessage() != null) {
+					msg = msg + "\n" + e.getMessage();
+				}
+				log.warn(msg);
 			}
 		} else {
 			if (log.isErrorEnabled()) {
 				String qs = request.getQueryString();
-				log.error(qs == null ? target : target + "?" + qs, e);
+				log.error(errorCode + " Error: " + (qs == null ? target : target + "?" + qs), e);
 			}
 		}