采用线程池保存日志及优化
This commit is contained in:
@@ -15,6 +15,7 @@ import org.springframework.web.servlet.ModelAndView;
|
||||
import com.jeesite.common.lang.ByteUtils;
|
||||
import com.jeesite.common.lang.DateUtils;
|
||||
import com.jeesite.common.lang.TimeUtils;
|
||||
import com.jeesite.common.network.IpUtils;
|
||||
import com.jeesite.common.service.BaseService;
|
||||
import com.jeesite.modules.sys.utils.LogUtils;
|
||||
import com.jeesite.modules.sys.utils.UserUtils;
|
||||
@@ -35,8 +36,8 @@ public class LogInterceptor extends BaseService implements HandlerInterceptor {
|
||||
long beginTime = System.currentTimeMillis();// 1、开始时间
|
||||
startTimeThreadLocal.set(beginTime); // 线程绑定变量(该数据只有当前请求的线程可见)
|
||||
if (logger.isDebugEnabled()){
|
||||
logger.debug("开始计时: {} URI: {}", new SimpleDateFormat("hh:mm:ss.SSS")
|
||||
.format(beginTime), request.getRequestURI());
|
||||
logger.debug("开始计时: {} URI: {} IP: {}", new SimpleDateFormat("hh:mm:ss.SSS")
|
||||
.format(beginTime), request.getRequestURI(), IpUtils.getRemoteAddr(request));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@@ -52,9 +53,9 @@ public class LogInterceptor extends BaseService implements HandlerInterceptor {
|
||||
@Override
|
||||
public void afterCompletion(HttpServletRequest request, HttpServletResponse response,
|
||||
Object handler, Exception ex) throws Exception {
|
||||
long beginTime = startTimeThreadLocal.get();// 得到线程绑定的局部变量(开始时间)
|
||||
Long beginTime = startTimeThreadLocal.get();// 得到线程绑定的局部变量(开始时间)
|
||||
long endTime = System.currentTimeMillis(); // 2、结束时间
|
||||
long executeTime = endTime - beginTime; // 3、获取执行时间
|
||||
long executeTime = beginTime == null ? 0 : endTime - beginTime; // 3、获取执行时间
|
||||
startTimeThreadLocal.remove(); // 用完之后销毁线程变量数据
|
||||
|
||||
// 保存日志
|
||||
|
||||
@@ -45,7 +45,7 @@ import eu.bitwalker.useragentutils.UserAgent;
|
||||
*/
|
||||
public class LogUtils {
|
||||
|
||||
//采用线程池优化性能
|
||||
// 采用线程池优化性能
|
||||
private static ExecutorService logThreadPool = new ThreadPoolExecutor(5, 20,
|
||||
60L, TimeUnit.SECONDS, new LinkedBlockingQueue<>(),
|
||||
new DefaultThreadFactory("log-save"));
|
||||
@@ -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 Object handler;
|
||||
private String contextPath;
|
||||
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.handler = handler;
|
||||
this.contextPath = contextPath;
|
||||
|
||||
Reference in New Issue
Block a user