X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=runtime%2Forg.argeo.slc.support.simple%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Flog4j%2FSlcExecutionAppender.java;h=880aefef1f51b27e3a4a7100e6407629495bc018;hb=0e2ff188c2e8ffac85739cccc3925e8bd82d7be9;hp=2968253337c74bde90f0f7c02ee612d76a6667cc;hpb=0bcca59c19e554f94ec03af0dc7c44047a2eade7;p=gpl%2Fargeo-slc.git 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 296825333..880aefef1 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 @@ -26,7 +26,7 @@ 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.argeo.slc.execution.ExecutionStep; import org.springframework.beans.factory.DisposableBean; import org.springframework.beans.factory.InitializingBean; @@ -34,6 +34,12 @@ import org.springframework.beans.factory.InitializingBean; public class SlcExecutionAppender extends AppenderSkeleton implements InitializingBean, DisposableBean { + private Boolean disabled = false; + + private String level = null; + + private Level log4jLevel = null; + /** Marker to prevent stack overflow */ private ThreadLocal dispatching = new ThreadLocal() { @@ -45,7 +51,7 @@ public class SlcExecutionAppender extends AppenderSkeleton implements private Layout layout = null; private String pattern = "%m - %c%n"; - private Boolean onlyExecutionThread = true; + private Boolean onlyExecutionThread = false; public void afterPropertiesSet() { if (layout != null) @@ -57,9 +63,30 @@ public class SlcExecutionAppender extends AppenderSkeleton implements @Override protected void append(LoggingEvent event) { + if (disabled) + return; + if (dispatching.get()) return; + if (level != null && !level.trim().equals("")) { + if (log4jLevel == null || !log4jLevel.toString().equals(level)) + try { + log4jLevel = Level.toLevel(level); + } catch (Exception e) { + System.err + .println("Log4j level could not be set for level '" + + level + "', resetting it to null."); + e.printStackTrace(); + level = null; + } + + if (log4jLevel != null + && !event.getLevel().isGreaterOrEqual(log4jLevel)) { + return; + } + } + Thread currentThread = Thread.currentThread(); if (currentThread.getThreadGroup() instanceof ProcessThreadGroup) { if (onlyExecutionThread @@ -69,20 +96,20 @@ public class SlcExecutionAppender extends AppenderSkeleton implements final String type; if (event.getLevel().equals(Level.ERROR) || event.getLevel().equals(Level.FATAL)) - type = SlcExecutionStep.ERROR; + type = ExecutionStep.ERROR; else if (event.getLevel().equals(Level.WARN)) - type = SlcExecutionStep.WARNING; + type = ExecutionStep.WARNING; else if (event.getLevel().equals(Level.INFO)) - type = SlcExecutionStep.INFO; + type = ExecutionStep.INFO; else if (event.getLevel().equals(Level.DEBUG)) - type = SlcExecutionStep.DEBUG; + type = ExecutionStep.DEBUG; else if (event.getLevel().equals(Level.TRACE)) - type = SlcExecutionStep.TRACE; + type = ExecutionStep.TRACE; else - type = SlcExecutionStep.INFO; + type = ExecutionStep.INFO; - SlcExecutionStep step = new SlcExecutionStep(new Date(event - .getTimeStamp()), type, layout.format(event)); + ExecutionStep step = new ExecutionStep(new Date( + event.getTimeStamp()), type, layout.format(event)); try { dispatching.set(true); @@ -117,4 +144,12 @@ public class SlcExecutionAppender extends AppenderSkeleton implements this.onlyExecutionThread = onlyExecutionThread; } + public void setDisabled(Boolean disabled) { + this.disabled = disabled; + } + + public void setLevel(String level) { + this.level = level; + } + }