From 17ffc9fdb8f3a490881e540db8ff81655308233e Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Mon, 24 May 2010 11:52:49 +0000 Subject: [PATCH 1/1] Improve logging git-svn-id: https://svn.argeo.org/slc/trunk@3591 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- .../slc/core/execution/ExecutionThread.java | 16 ++------- .../slc/core/execution/ProcessThread.java | 7 ++-- .../core/execution/ProcessThreadGroup.java | 35 +++++++++++++++++++ .../argeo/slc/log4j/SlcExecutionAppender.java | 21 +++++++---- 4 files changed, 54 insertions(+), 25 deletions(-) create mode 100644 runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/execution/ProcessThreadGroup.java diff --git a/runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/execution/ExecutionThread.java b/runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/execution/ExecutionThread.java index c81e8b1a0..db289b4a5 100644 --- a/runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/execution/ExecutionThread.java +++ b/runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/execution/ExecutionThread.java @@ -1,14 +1,9 @@ package org.argeo.slc.core.execution; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; - import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.argeo.slc.execution.ExecutionFlowDescriptor; import org.argeo.slc.process.RealizedFlow; -import org.argeo.slc.process.SlcExecutionNotifier; import org.argeo.slc.process.SlcExecutionStep; /** Thread of a single execution */ @@ -63,15 +58,8 @@ public class ExecutionThread extends Thread { } } - public void dispatchAddStep(SlcExecutionStep step) { - processThread.getSlcProcess().getSteps().add(step); - List steps = new ArrayList(); - steps.add(step); - for (Iterator it = processThread - .getExecutionModulesManager().getSlcExecutionNotifiers() - .iterator(); it.hasNext();) { - it.next().addSteps(processThread.getSlcProcess(), steps); - } + private void dispatchAddStep(SlcExecutionStep step) { + processThread.getProcessThreadGroup().dispatchAddStep(step); } } diff --git a/runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/execution/ProcessThread.java b/runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/execution/ProcessThread.java index ec600cb57..1987f259e 100644 --- a/runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/execution/ProcessThread.java +++ b/runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/execution/ProcessThread.java @@ -16,7 +16,7 @@ public class ProcessThread extends Thread { private final AbstractExecutionModulesManager executionModulesManager; private final SlcExecution slcProcess; - private final ThreadGroup processThreadGroup; + private final ProcessThreadGroup processThreadGroup; private final List flowsToProcess = new ArrayList(); private Boolean hadAnError = false; @@ -28,8 +28,7 @@ public class ProcessThread extends Thread { "SLC Process #" + slcExecution.getUuid()); this.executionModulesManager = executionModulesManager; this.slcProcess = slcExecution; - processThreadGroup = new ThreadGroup("SLC Process #" - + slcExecution.getUuid() + " thread group"); + processThreadGroup = new ProcessThreadGroup(this); } public void run() { @@ -83,7 +82,7 @@ public class ProcessThread extends Thread { return slcProcess; } - public ThreadGroup getProcessThreadGroup() { + public ProcessThreadGroup getProcessThreadGroup() { return processThreadGroup; } diff --git a/runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/execution/ProcessThreadGroup.java b/runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/execution/ProcessThreadGroup.java new file mode 100644 index 000000000..7084f12c0 --- /dev/null +++ b/runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/execution/ProcessThreadGroup.java @@ -0,0 +1,35 @@ +package org.argeo.slc.core.execution; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +import org.argeo.slc.process.SlcExecution; +import org.argeo.slc.process.SlcExecutionNotifier; +import org.argeo.slc.process.SlcExecutionStep; + +public class ProcessThreadGroup extends ThreadGroup { + private final ProcessThread processThread; + + public ProcessThreadGroup(ProcessThread processThread) { + super("SLC Process #" + processThread.getSlcProcess().getUuid() + + " thread group"); + this.processThread = processThread; + } + + public SlcExecution getSlcProcess() { + return processThread.getSlcProcess(); + } + + public void dispatchAddStep(SlcExecutionStep step) { + processThread.getSlcProcess().getSteps().add(step); + List steps = new ArrayList(); + steps.add(step); + for (Iterator it = processThread + .getExecutionModulesManager().getSlcExecutionNotifiers() + .iterator(); it.hasNext();) { + it.next().addSteps(processThread.getSlcProcess(), steps); + } + } + +} diff --git a/runtime/org.argeo.slc.support.simple/src/main/java/org/argeo/slc/log4j/SlcExecutionAppender.java b/runtime/org.argeo.slc.support.simple/src/main/java/org/argeo/slc/log4j/SlcExecutionAppender.java index 85d3e677c..e14a1f24f 100644 --- a/runtime/org.argeo.slc.support.simple/src/main/java/org/argeo/slc/log4j/SlcExecutionAppender.java +++ b/runtime/org.argeo.slc.support.simple/src/main/java/org/argeo/slc/log4j/SlcExecutionAppender.java @@ -6,6 +6,7 @@ import org.apache.log4j.Logger; import org.apache.log4j.PatternLayout; import org.apache.log4j.spi.LoggingEvent; import org.argeo.slc.core.execution.ExecutionThread; +import org.argeo.slc.core.execution.ProcessThreadGroup; import org.argeo.slc.process.SlcExecutionStep; import org.springframework.beans.factory.DisposableBean; import org.springframework.beans.factory.InitializingBean; @@ -16,6 +17,7 @@ public class SlcExecutionAppender extends AppenderSkeleton implements private Layout layout = null; private String pattern = "%m - %c%n"; + private Boolean onlyExecutionThread = true; public void afterPropertiesSet() { if (layout != null) @@ -27,13 +29,14 @@ public class SlcExecutionAppender extends AppenderSkeleton implements @Override protected void append(LoggingEvent event) { - if (!(Thread.currentThread() instanceof ExecutionThread)) - return; - - ExecutionThread executionThread = (ExecutionThread) Thread - .currentThread(); - executionThread.dispatchAddStep(new SlcExecutionStep(layout - .format(event))); + Thread currentThread = Thread.currentThread(); + if (currentThread.getThreadGroup() instanceof ProcessThreadGroup) { + if (onlyExecutionThread + && !(currentThread instanceof ExecutionThread)) + return; + ((ProcessThreadGroup) currentThread.getThreadGroup()) + .dispatchAddStep(new SlcExecutionStep(layout.format(event))); + } } public void destroy() throws Exception { @@ -55,4 +58,8 @@ public class SlcExecutionAppender extends AppenderSkeleton implements this.pattern = pattern; } + public void setOnlyExecutionThread(Boolean onlyExecutionThread) { + this.onlyExecutionThread = onlyExecutionThread; + } + } -- 2.39.2