diff --git a/src/main/java/neatlogic/framework/file/core/Event.java b/src/main/java/neatlogic/framework/file/core/Event.java index 1916dcb46b92ea11df093d1d731fd18ed5c8e63b..a7280990e1b4bc900acfc7e0381570381abf6aba 100644 --- a/src/main/java/neatlogic/framework/file/core/Event.java +++ b/src/main/java/neatlogic/framework/file/core/Event.java @@ -16,9 +16,6 @@ along with this program. If not, see .*/ package neatlogic.framework.file.core; import com.alibaba.fastjson.JSONObject; -import neatlogic.framework.asynchronization.thread.NeatLogicThread; -import neatlogic.framework.file.core.appender.Appender; -import neatlogic.framework.file.core.appender.AppenderManager; import java.util.function.Consumer; @@ -28,7 +25,7 @@ import java.util.function.Consumer; * 经典组件(如appenders)的编写者应该知道,某些Event字段是延迟初始化的。因此,希望输出数据以供接收器稍后正确读取的附加程序必须在写出“惰性”字段之前对其进行初始化。 * 有关确切列表,请参阅{@link#prepareForDeferredProcessing()}方法。 */ -public class Event extends NeatLogicThread implements IEvent { +public class Event implements IEvent { /** * 生成此日志记录事件的线程的名称。 */ @@ -54,7 +51,6 @@ public class Event extends NeatLogicThread implements IEvent { private IAuditType auditType; public Event(String name, long timeStamp, JSONObject data, Consumer preProcessor, Consumer postProcessor, IAuditType auditType) { - super("Event"); this.name = name; this.data = data; this.preProcessor = preProcessor; @@ -69,12 +65,6 @@ public class Event extends NeatLogicThread implements IEvent { return name; } - @Override - protected void execute() { - Appender appender = AppenderManager.getAppender(this.auditType); - appender.doAppend(this); - } - @Override public String getThreadName() { if (threadName == null) { @@ -138,6 +128,10 @@ public class Event extends NeatLogicThread implements IEvent { this.beforeAppendFileSize = fileSize; } + public IAuditType getAuditType() { + return auditType; + } + @Override public String toString() { return getFormattedMessage(); diff --git a/src/main/java/neatlogic/framework/file/core/IEvent.java b/src/main/java/neatlogic/framework/file/core/IEvent.java index 201a0f983c7bbcfdf08a069b6dfef46628f7234a..d776fde9d9937bf4157326a3f99649cbc887f2e5 100644 --- a/src/main/java/neatlogic/framework/file/core/IEvent.java +++ b/src/main/java/neatlogic/framework/file/core/IEvent.java @@ -20,7 +20,7 @@ import com.alibaba.fastjson.JSONObject; /** * 事件接口 */ -public interface IEvent extends Runnable { +public interface IEvent { /** * 线程名称 * @return diff --git a/src/main/java/neatlogic/framework/file/core/appender/AppenderManager.java b/src/main/java/neatlogic/framework/file/core/appender/AppenderManager.java index 2551dfaa09d39f1deb67af03c4d3475d0a46af32..9cb68f779d2d61a12e8fc8e09b50d95aee691e4c 100644 --- a/src/main/java/neatlogic/framework/file/core/appender/AppenderManager.java +++ b/src/main/java/neatlogic/framework/file/core/appender/AppenderManager.java @@ -16,40 +16,30 @@ along with this program. If not, see .*/ package neatlogic.framework.file.core.appender; import ch.qos.logback.core.util.FileSize; -import neatlogic.framework.asynchronization.thread.NeatLogicThread; +import neatlogic.framework.asynchronization.taskmanager.AsyncTaskManager; import neatlogic.framework.asynchronization.threadlocal.TenantContext; import neatlogic.framework.common.config.Config; +import neatlogic.framework.file.core.Event; import neatlogic.framework.file.core.IAuditType; import neatlogic.framework.file.core.IEvent; import neatlogic.framework.file.core.encoder.PatternLayoutEncoder; import neatlogic.framework.file.core.rolling.FixedWindowRollingPolicy; import neatlogic.framework.file.core.rolling.SizeBasedTriggeringPolicy; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import java.io.File; -import java.util.concurrent.*; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentMap; public class AppenderManager { - private static final Logger logger = LoggerFactory.getLogger(AppenderManager.class); - - private static final ThreadPoolExecutor threadPool = new ThreadPoolExecutor( - 1, 3, - 60L, TimeUnit.SECONDS, - new ArrayBlockingQueue<>(1000), new ThreadPoolExecutor.DiscardPolicy()); - static { - // 如果阻塞队列中没有任务,线程池中活跃线程数降为0 - threadPool.allowCoreThreadTimeOut(true); - } private static ConcurrentMap> appenderCache = new ConcurrentHashMap<>(); - public static void execute(NeatLogicThread command) { - try { - threadPool.execute(command); - } catch (RejectedExecutionException e) { - logger.error(e.getMessage(), e); - } + public static void execute(Event event) { + AsyncTaskManager instance = AsyncTaskManager.getInstance(event.getAuditType().getType().toUpperCase() + "-THREAD", 1, event1 -> { + Appender appender = AppenderManager.getAppender(event1.getAuditType()); + appender.doAppend(event1); + }); + instance.submitTask(event); } public static Appender getAppender(IAuditType auditType) {