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"
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<beans xmlns="http://www.springframework.org/schema/beans"\r
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"\r
+ xsi:schemaLocation="\r
+ http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">\r
+\r
+ <!-- Manager -->\r
+ <bean id="modulesManager" class="org.argeo.slc.osgi.OsgiExecutionModulesManager">\r
+ <property name="slcExecutionNotifiers" ref="slcExecutionListeners" />\r
+ <property name="executionModulesListeners" ref="executionModulesListeners" />\r
+ <property name="bundlesManager" ref="bundlesManager" />\r
+ </bean>\r
+\r
+ <bean id="bundlesManager" class="org.argeo.slc.osgi.BundlesManager" />\r
+\r
+ <!-- Logging -->\r
+ <bean id="log4Notification" class="org.argeo.slc.log4j.SlcExecutionAppender">\r
+ <property name="disabled" value="${slc.agent.log4Notification.disabled}" />\r
+ <property name="level" value="${slc.agent.log4Notification.level}" />\r
+ <property name="onlyExecutionThread"\r
+ value="${slc.agent.log4Notification.onlyExecutionThread}" />\r
+ </bean>\r
+\r
+ <bean id="treeTestResultLogger" class="org.argeo.slc.core.test.tree.TreeTestResultLogger" />\r
+\r
+\r
+</beans>
\ No newline at end of file
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"
default-lazy-init="false">
- <bean id="treeTestResultLogger" class="org.argeo.slc.core.test.tree.TreeTestResultLogger" />
-
+ <bean
+ class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
+ <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
+ <property name="locations">
+ <value>osgibundle:agent.properties</value>
+ </property>
+ </bean>
</beans>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>\r
-<beans xmlns="http://www.springframework.org/schema/beans"\r
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"\r
- xsi:schemaLocation="\r
- http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">\r
-\r
- <bean id="modulesManager" class="org.argeo.slc.osgi.OsgiExecutionModulesManager">\r
- <property name="slcExecutionNotifiers" ref="slcExecutionListeners" />\r
- <property name="executionModulesListeners" ref="executionModulesListeners" />\r
- <property name="bundlesManager" ref="bundlesManager" />\r
- </bean>\r
-\r
- <bean id="bundlesManager" class="org.argeo.slc.osgi.BundlesManager" />\r
-\r
- <bean class="org.argeo.slc.log4j.SlcExecutionAppender" />\r
-</beans>
\ No newline at end of file
--- /dev/null
+
+# 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
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<Boolean> dispatching = new ThreadLocal<Boolean>() {
@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
this.onlyExecutionThread = onlyExecutionThread;
}
+ public void setDisabled(Boolean disabled) {
+ this.disabled = disabled;
+ }
+
+ public void setLevel(String level) {
+ this.level = level;
+ }
+
}