From 345b21c1024a619a2882d1559afb34ab2c880d16 Mon Sep 17 00:00:00 2001 From: zpsw Date: Mon, 13 May 2019 12:01:44 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=87=E7=94=A8=E7=BA=BF=E7=A8=8B=E6=B1=A0?= =?UTF-8?q?=E4=BF=9D=E5=AD=98=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jeesite/modules/sys/utils/LogUtils.java | 21 +++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/modules/core/src/main/java/com/jeesite/modules/sys/utils/LogUtils.java b/modules/core/src/main/java/com/jeesite/modules/sys/utils/LogUtils.java index 08817498..6343940b 100644 --- a/modules/core/src/main/java/com/jeesite/modules/sys/utils/LogUtils.java +++ b/modules/core/src/main/java/com/jeesite/modules/sys/utils/LogUtils.java @@ -4,9 +4,14 @@ package com.jeesite.modules.sys.utils; import java.lang.reflect.Method; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.LinkedBlockingQueue; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; import javax.servlet.http.HttpServletRequest; +import io.netty.util.concurrent.DefaultThreadFactory; import org.apache.ibatis.mapping.SqlCommandType; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.core.DefaultParameterNameDiscoverer; @@ -39,7 +44,12 @@ import eu.bitwalker.useragentutils.UserAgent; * @version 2017-11-7 */ public class LogUtils { - + + //采用线程池优化性能 + private static ExecutorService logThreadPool = new ThreadPoolExecutor(5, 20, + 60L, TimeUnit.SECONDS, new LinkedBlockingQueue<>(), + new DefaultThreadFactory("log-save")); + /** * 静态内部类,延迟加载,懒汉式,线程安全的单例模式 */ @@ -101,22 +111,21 @@ public class LogUtils { if (ex != null){ throwable = ExceptionUtils.getThrowable(request); } - + // 异步保存日志 - new SaveLogThread(log, handler, request.getContextPath(), throwable).start(); + logThreadPool.submit(new SaveLogTask(log, handler, request.getContextPath(), throwable)); } /** * 保存日志线程 */ - public static class SaveLogThread extends Thread{ + public static class SaveLogTask extends Thread{ private Log log; private Object handler; private String contextPath; private Throwable throwable; - public SaveLogThread(Log log, Object handler, String contextPath, Throwable throwable){ - super(SaveLogThread.class.getSimpleName()); + public SaveLogTask(Log log, Object handler, String contextPath, Throwable throwable){ this.log = log; this.handler = handler; this.contextPath = contextPath;