采用线程池保存日志及优化

This commit is contained in:
thinkgem
2019-11-06 00:33:06 +08:00
parent 345b21c102
commit d07d90c4ab
2 changed files with 9 additions and 8 deletions

View File

@@ -15,6 +15,7 @@ import org.springframework.web.servlet.ModelAndView;
import com.jeesite.common.lang.ByteUtils; import com.jeesite.common.lang.ByteUtils;
import com.jeesite.common.lang.DateUtils; import com.jeesite.common.lang.DateUtils;
import com.jeesite.common.lang.TimeUtils; import com.jeesite.common.lang.TimeUtils;
import com.jeesite.common.network.IpUtils;
import com.jeesite.common.service.BaseService; import com.jeesite.common.service.BaseService;
import com.jeesite.modules.sys.utils.LogUtils; import com.jeesite.modules.sys.utils.LogUtils;
import com.jeesite.modules.sys.utils.UserUtils; import com.jeesite.modules.sys.utils.UserUtils;
@@ -35,8 +36,8 @@ public class LogInterceptor extends BaseService implements HandlerInterceptor {
long beginTime = System.currentTimeMillis();// 1、开始时间 long beginTime = System.currentTimeMillis();// 1、开始时间
startTimeThreadLocal.set(beginTime); // 线程绑定变量(该数据只有当前请求的线程可见) startTimeThreadLocal.set(beginTime); // 线程绑定变量(该数据只有当前请求的线程可见)
if (logger.isDebugEnabled()){ if (logger.isDebugEnabled()){
logger.debug("开始计时: {} URI: {}", new SimpleDateFormat("hh:mm:ss.SSS") logger.debug("开始计时: {} URI: {} IP: {}", new SimpleDateFormat("hh:mm:ss.SSS")
.format(beginTime), request.getRequestURI()); .format(beginTime), request.getRequestURI(), IpUtils.getRemoteAddr(request));
} }
return true; return true;
} }
@@ -52,9 +53,9 @@ public class LogInterceptor extends BaseService implements HandlerInterceptor {
@Override @Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, public void afterCompletion(HttpServletRequest request, HttpServletResponse response,
Object handler, Exception ex) throws Exception { Object handler, Exception ex) throws Exception {
long beginTime = startTimeThreadLocal.get();// 得到线程绑定的局部变量(开始时间) Long beginTime = startTimeThreadLocal.get();// 得到线程绑定的局部变量(开始时间)
long endTime = System.currentTimeMillis(); // 2、结束时间 long endTime = System.currentTimeMillis(); // 2、结束时间
long executeTime = endTime - beginTime; // 3、获取执行时间 long executeTime = beginTime == null ? 0 : endTime - beginTime; // 3、获取执行时间
startTimeThreadLocal.remove(); // 用完之后销毁线程变量数据 startTimeThreadLocal.remove(); // 用完之后销毁线程变量数据
// 保存日志 // 保存日志

View File

@@ -113,19 +113,19 @@ public class LogUtils {
} }
// 异步保存日志 // 异步保存日志
logThreadPool.submit(new SaveLogTask(log, handler, request.getContextPath(), throwable)); logThreadPool.submit(new SaveLogThread(log, handler, request.getContextPath(), throwable));
} }
/** /**
* 保存日志线程 * 保存日志线程
*/ */
public static class SaveLogTask extends Thread{ public static class SaveLogThread extends Thread{
private Log log; private Log log;
private Object handler; private Object handler;
private String contextPath; private String contextPath;
private Throwable throwable; private Throwable throwable;
public SaveLogTask(Log log, Object handler, String contextPath, Throwable throwable){ public SaveLogThread(Log log, Object handler, String contextPath, Throwable throwable){
this.log = log; this.log = log;
this.handler = handler; this.handler = handler;
this.contextPath = contextPath; this.contextPath = contextPath;