From 777dd0b454c2feaece9fc5637c8902fe473463aa Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Thu, 15 Jul 2010 12:20:11 +0000 Subject: [PATCH 1/1] Allow optimizations git-svn-id: https://svn.argeo.org/slc/trunk@3702 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- .../org.argeo.slc.agent/META-INF/MANIFEST.MF | 3 +- .../spring/{manager.xml => agent.xml} | 13 ++++++- .../META-INF/spring/common.xml | 9 +++-- .../org.argeo.slc.agent/agent.properties | 7 ++++ .../argeo/slc/log4j/SlcExecutionAppender.java | 35 +++++++++++++++++++ 5 files changed, 63 insertions(+), 4 deletions(-) rename modules/agent/org.argeo.slc.agent/META-INF/spring/{manager.xml => agent.xml} (58%) create mode 100644 modules/agent/org.argeo.slc.agent/agent.properties diff --git a/modules/agent/org.argeo.slc.agent/META-INF/MANIFEST.MF b/modules/agent/org.argeo.slc.agent/META-INF/MANIFEST.MF index 9af4c105a..4ed8eb7e8 100644 --- a/modules/agent/org.argeo.slc.agent/META-INF/MANIFEST.MF +++ b/modules/agent/org.argeo.slc.agent/META-INF/MANIFEST.MF @@ -6,4 +6,5 @@ Bundle-Name: Argeo SLC Agent Bundle-SymbolicName: org.argeo.slc.agent Import-Package: org.apache.xalan.processor, org.apache.xerces.jaxp, - org.argeo.slc.log4j + org.argeo.slc.log4j, + org.springframework.beans.factory.config;specification-version="2.5.6.SEC01" diff --git a/modules/agent/org.argeo.slc.agent/META-INF/spring/manager.xml b/modules/agent/org.argeo.slc.agent/META-INF/spring/agent.xml similarity index 58% rename from modules/agent/org.argeo.slc.agent/META-INF/spring/manager.xml rename to modules/agent/org.argeo.slc.agent/META-INF/spring/agent.xml index 50e9d5aa3..1ec088763 100644 --- a/modules/agent/org.argeo.slc.agent/META-INF/spring/manager.xml +++ b/modules/agent/org.argeo.slc.agent/META-INF/spring/agent.xml @@ -4,6 +4,7 @@ xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> + @@ -12,5 +13,15 @@ - + + + + + + + + + + \ No newline at end of file diff --git a/modules/agent/org.argeo.slc.agent/META-INF/spring/common.xml b/modules/agent/org.argeo.slc.agent/META-INF/spring/common.xml index dfb3f259a..2a3f36cfb 100644 --- a/modules/agent/org.argeo.slc.agent/META-INF/spring/common.xml +++ b/modules/agent/org.argeo.slc.agent/META-INF/spring/common.xml @@ -4,6 +4,11 @@ xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd" default-lazy-init="false"> - - + + + + osgibundle:agent.properties + + \ No newline at end of file diff --git a/modules/agent/org.argeo.slc.agent/agent.properties b/modules/agent/org.argeo.slc.agent/agent.properties new file mode 100644 index 000000000..d4cea2e2c --- /dev/null +++ b/modules/agent/org.argeo.slc.agent/agent.properties @@ -0,0 +1,7 @@ + +# Disable LOG4J notification to the process +slc.agent.log4Notification.disabled=false +# Notification level +slc.agent.log4Notification.level= +# Do not log sub threads (those started by the process) +slc.agent.log4Notification.onlyExecutionThread=false 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 4193fd925..a40c98e5a 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 @@ -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() { @@ -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 @@ -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; + } + } -- 2.39.2