]> git.aero2k.de Git - tmp/jakarta-migration.git/commitdiff
CSPACE-1034
authorSanjay Dalal <sanjay.dalal@berkeley.edu>
Wed, 3 Mar 2010 22:56:41 +0000 (22:56 +0000)
committerSanjay Dalal <sanjay.dalal@berkeley.edu>
Wed, 3 Mar 2010 22:56:41 +0000 (22:56 +0000)
!!! requires ant clean undeploy deploy at the trunk level !!!
removed log4j.properties from cspace-services.war
added log4j repositoryselector to avoid jboss jamming cspace war's log st. on top of its log st.
added jboss-log4j.xml to build (common/src/main/config/log), copied to jboss at deploy time, only org.collectionspace is in DEBUG cateogry, cspace/log/collectionspace.log contains cs log
moved bindnigs to common/src/main/config/services
removed log4j.jar from nuxeo-client/lib and from cspace-services.war
removed spring's log4jconfiglistener from web.xml that was shutting down logmanager

ant clean undeploy deploy at trunk level
test mvn test at trunk level

D    trunk/services/JaxRsServiceProvider/src/main/resources/log4j.properties
M    trunk/services/JaxRsServiceProvider/src/main/webapp/WEB-INF/web.xml
M    trunk/services/JaxRsServiceProvider/pom.xml
A    trunk/services/common/src/main/java/org/collectionspace/services/common/log
A    trunk/services/common/src/main/java/org/collectionspace/services/common/log/CollectionSpaceLog4jRepositorySelector.java
M    trunk/services/common/src/main/java/org/collectionspace/services/common/CollectionSpaceServiceContextListener.java
A    trunk/services/common/src/main/config/log
A    trunk/services/common/src/main/config/log/jboss-log4j.xml
D    trunk/services/common/src/main/config/service-config.xml
D    trunk/services/common/src/main/config/tenant-bindings.xml
A    trunk/services/common/src/main/config/services
A  + trunk/services/common/src/main/config/services/service-config.xml
A  + trunk/services/common/src/main/config/services/tenant-bindings.xml
M    trunk/services/common/build.xml
D    trunk/3rdparty/nuxeo/nuxeo-client/lib/log4j.jar

3rdparty/nuxeo/nuxeo-client/lib/log4j.jar [deleted file]
services/JaxRsServiceProvider/pom.xml
services/JaxRsServiceProvider/src/main/resources/log4j.properties [deleted file]
services/JaxRsServiceProvider/src/main/webapp/WEB-INF/web.xml
services/common/build.xml
services/common/src/main/config/log/jboss-log4j.xml [new file with mode: 0644]
services/common/src/main/config/services/service-config.xml [moved from services/common/src/main/config/service-config.xml with 100% similarity]
services/common/src/main/config/services/tenant-bindings.xml [moved from services/common/src/main/config/tenant-bindings.xml with 100% similarity]
services/common/src/main/java/org/collectionspace/services/common/CollectionSpaceServiceContextListener.java
services/common/src/main/java/org/collectionspace/services/common/log/CollectionSpaceLog4jRepositorySelector.java [new file with mode: 0644]

diff --git a/3rdparty/nuxeo/nuxeo-client/lib/log4j.jar b/3rdparty/nuxeo/nuxeo-client/lib/log4j.jar
deleted file mode 100644 (file)
index 1183df8..0000000
Binary files a/3rdparty/nuxeo/nuxeo-client/lib/log4j.jar and /dev/null differ
index 885edabcc3003036b6c3da1f90e0f83f0fc63219..879c13d487f8aed484c5b2bc8b59730099b3f9fc 100644 (file)
         <spring.security.version>3.0.1.RELEASE</spring.security.version>\r
     </properties>\r
     <dependencies>\r
+\r
+        <dependency>\r
+            <groupId>org.slf4j</groupId>\r
+            <artifactId>slf4j-api</artifactId>\r
+        </dependency>\r
+        <dependency>\r
+            <groupId>org.slf4j</groupId>\r
+            <artifactId>slf4j-log4j12</artifactId>\r
+        </dependency>\r
+\r
+        <dependency>\r
+            <groupId>log4j</groupId>\r
+            <artifactId>log4j</artifactId>\r
+            <version>1.2.14</version>\r
+            <scope>provided</scope>\r
+        </dependency>\r
+\r
         <dependency>\r
             <groupId>org.collectionspace.services</groupId>\r
             <artifactId>org.collectionspace.services.common</artifactId>\r
             <scope>test</scope>\r
         </dependency>\r
 \r
-        <!--dependency>\r
-            <groupId>org.slf4j</groupId>\r
-            <artifactId>slf4j-api</artifactId>\r
-        </dependency>\r
-        <dependency>\r
-            <groupId>org.slf4j</groupId>\r
-            <artifactId>slf4j-log4j12</artifactId>\r
-        </dependency-->\r
-\r
-        <dependency>\r
-            <groupId>org.slf4j</groupId>\r
-            <artifactId>slf4j-simple</artifactId>\r
-            <scope>test</scope>\r
-            <version>1.5.2</version>\r
-        </dependency>\r
 \r
         <!-- dependencies on spring security & framework are runtime deps only -->\r
         <!-- the following list is kept to make sure domain has these packages -->\r
                             <Vendor>CollectionSpace Services</Vendor>\r
                             <Package>${pom.groupId}</Package>\r
                             <Release>${cs.release}</Release>\r
-                        </manifestEntries>                      \r
+                        </manifestEntries>\r
                     </archive>\r
                 </configuration>\r
             </plugin>\r
diff --git a/services/JaxRsServiceProvider/src/main/resources/log4j.properties b/services/JaxRsServiceProvider/src/main/resources/log4j.properties
deleted file mode 100644 (file)
index 3d9f1a6..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-log4j.rootLogger=debug, stdout, R\r
-\r
-log4j.appender.stdout=org.apache.log4j.ConsoleAppender\r
-log4j.appender.stdout.layout=org.apache.log4j.PatternLayout\r
-\r
-# Pattern to output the caller's file name and line number.\r
-log4j.appender.stdout.layout.ConversionPattern=%d %-5p [%t] [%c:%L] %m%n\r
-\r
-log4j.appender.R=org.apache.log4j.RollingFileAppender\r
-log4j.appender.R.File=$jboss.home.dir/server/cspace/log/server.log\r
-\r
-log4j.appender.R.MaxFileSize=100KB\r
-# Keep one backup file\r
-log4j.appender.R.MaxBackupIndex=1\r
-\r
-log4j.appender.R.layout=org.apache.log4j.PatternLayout\r
-log4j.appender.R.layout.ConversionPattern=%d %-5p [%t] [%c:%L] %m%n\r
-\r
-#packages\r
-log4j.logger.org.jboss.resteasy=INFO\r
-log4j.logger.org.nuxeo=WARN\r
-log4j.logger.nuxeo=INFO\r
-log4j.logger.org.collectionspace=DEBUG\r
-log4j.logger.org.springframework=INFO
\ No newline at end of file
index 13b44e4127b558606215c6159a4ebd893e23d680..65512963bee7c49c331e5454d47ea1bbaafd85cc 100644 (file)
 -->
 <web-app>
     <display-name>CollectionSpace Services</display-name>
+    <env-entry>
+        <description>Sets the logging context for the Tiger web-app</description>
+        <env-entry-name>cspace-logging-context</env-entry-name>
+        <env-entry-value>CSpaceLoggingContext</env-entry-value>
+        <env-entry-type>java.lang.String</env-entry-type>
+    </env-entry>
 
     <context-param>
         <param-name>javax.ws.rs.Application</param-name>
             /WEB-INF/applicationContext-security.xml
         </param-value>
     </context-param>
-    
+
     <filter>
         <filter-name>springSecurityFilterChain</filter-name>
         <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
     </filter>
 
     <filter-mapping>
-      <filter-name>springSecurityFilterChain</filter-name>
-      <url-pattern>/*</url-pattern>
+        <filter-name>springSecurityFilterChain</filter-name>
+        <url-pattern>/*</url-pattern>
     </filter-mapping>
 
     <!-- Listeners -->
-    
+
     <!--
       - Loads the root application context of this web app at startup.
       - The application context is then available via
       - context. Optional unless concurrent session control is being used.
       -->
     <listener>
-      <listener-class>org.springframework.security.web.session.HttpSessionEventPublisher</listener-class>
+        <listener-class>org.springframework.security.web.session.HttpSessionEventPublisher</listener-class>
     </listener>
 
-    <listener>
+    <!--listener>
         <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
-    </listener>
+    </listener-->
 
     <listener>
         <listener-class>
@@ -89,7 +95,7 @@
         <url-pattern>/*</url-pattern>
     </servlet-mapping>
 
-<!-- BEGIN-AUTH uncomment the following
+    <!-- BEGIN-AUTH uncomment the following
     <security-constraint>
         <web-resource-collection>
             <web-resource-name>CollectionSpace Services</web-resource-name>
index 6b99bb73665ba65cbdb99076ddbe2ea9ad84776e..50e8d1360474369eafb6d1356f7a8c9d317d8131 100644 (file)
 
     <target name="deploy" depends="install"
             description="deploy common elements in ${jboss.server.cspace}">
+        <copy tofile="${jboss.server.cspace}/conf/jboss-log4j.xml.org"
+              file="${jboss.server.cspace}/conf/jboss-log4j.xml"
+              overwrite="false"/>
+        <copy tofile="${jboss.server.cspace}/conf/jboss-log4j.xml"
+              file="${src}/main/config/log/jboss-log4j.xml"
+              overwrite="true"/>
         <antcall target="deploy_jpa" />
         <antcall target="deploy_spring" />
         <copy todir="${jboss.server.cspace}/cspace/config/services">
-            <fileset dir="${basedir}/src/main/config"/>
+            <fileset dir="${basedir}/src/main/config/services"/>
         </copy>
     </target>
 
     <target name="undeploy"
             description="undeploy common elements from ${jboss.server.cspace}">
+        <copy tofile="${jboss.server.cspace}/conf/jboss-log4j.xml"
+              file="${jboss.server.cspace}/conf/jboss-log4j.xml.org"
+              overwrite="true" failonerror="false" />
         <delete failonerror="false" dir="${jboss.server.cspace}/cspace/config/services"/>
     </target>
 
diff --git a/services/common/src/main/config/log/jboss-log4j.xml b/services/common/src/main/config/log/jboss-log4j.xml
new file mode 100644 (file)
index 0000000..bac4f22
--- /dev/null
@@ -0,0 +1,368 @@
+<?xml version="1.0" encoding="UTF-8"?><!-- ===================================================================== --><!--                                                                       --><!--  Log4j Configuration                                                  --><!--                                                                       --><!-- ===================================================================== --><!-- $Id: jboss-log4j.xml 75507 2008-07-08 20:15:07Z stan.silvert@jboss.com $ --><!--
+   | For more configuration infromation and examples see the Jakarta Log4j
+   | owebsite: http://jakarta.apache.org/log4j
+ --><!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">\r
+<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false" threshold="null">\r
+\r
+   <!-- ================================= -->\r
+   <!-- Preserve messages in a local file -->\r
+   <!-- ================================= -->\r
+\r
+   <!-- A time/date based rolling appender -->\r
+   <appender name="FILE"
+   class="org.jboss.logging.appender.DailyRollingFileAppender">
+     <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
+     <param name="File" value="${jboss.server.log.dir}/server.log"/>
+     <param name="Append" value="false"/>
+     <param name="DatePattern" value="'.'yyyy-MM-dd"/>
+     <param name="Threshold" value="INFO"/>
+     <layout class="org.apache.log4j.PatternLayout">
+       <param name="ConversionPattern" value="%d %-5p [%c] %m%n"/>
+     </layout>
+   </appender>\r
+
+\r
+   <!-- A size based file rolling appender
+   <appender name="FILE" class="org.jboss.logging.appender.RollingFileAppender">
+     <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
+     <param name="File" value="${jboss.server.log.dir}/server.log"/>
+     <param name="Append" value="false"/>
+     <param name="MaxFileSize" value="500KB"/>
+     <param name="MaxBackupIndex" value="1"/>
+
+     <layout class="org.apache.log4j.PatternLayout">
+       <param name="ConversionPattern" value="%d %-5p [%c] %m%n"/>
+     </layout>     
+   </appender>
+   -->\r
+\r
+   <!-- ============================== -->\r
+   <!-- Append messages to the console -->\r
+   <!-- ============================== -->\r
+\r
+   <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">\r
+      <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>\r
+      <param name="Target" value="System.out"/>\r
+      <param name="Threshold" value="INFO"/>\r
+\r
+      <layout class="org.apache.log4j.PatternLayout">\r
+         <!-- The default pattern: Date Priority [Category] Message\n -->\r
+         <param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}] %m%n"/>\r
+      </layout>\r
+   </appender>\r
+  \r
+   <!-- ====================== -->\r
+   <!-- More Appender examples -->\r
+   <!-- ====================== -->\r
+\r
+   <!-- Buffer events and log them asynchronously
+   <appender name="ASYNC" class="org.apache.log4j.AsyncAppender">
+     <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
+     <appender-ref ref="FILE"/>
+     <appender-ref ref="CONSOLE"/>
+     <appender-ref ref="SMTP"/>
+   </appender>
+   -->\r
+\r
+   <!-- EMail events to an administrator
+   <appender name="SMTP" class="org.apache.log4j.net.SMTPAppender">
+     <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
+     <param name="Threshold" value="ERROR"/>
+     <param name="To" value="admin@myhost.domain.com"/>
+     <param name="From" value="nobody@myhost.domain.com"/>
+     <param name="Subject" value="JBoss Sever Errors"/>
+     <param name="SMTPHost" value="localhost"/>
+     <param name="BufferSize" value="10"/>
+     <layout class="org.apache.log4j.PatternLayout">
+       <param name="ConversionPattern" value="[%d{ABSOLUTE},%c{1}] %m%n"/>
+     </layout>
+   </appender>
+   -->\r
+\r
+   <!-- Syslog events
+   <appender name="SYSLOG" class="org.apache.log4j.net.SyslogAppender">
+     <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
+     <param name="Facility" value="LOCAL7"/>
+     <param name="FacilityPrinting" value="true"/>
+     <param name="SyslogHost" value="localhost"/>
+     <layout class="org.apache.log4j.PatternLayout">
+       <param name="ConversionPattern" value="[%d{ABSOLUTE},%c{1}] %m%n"/>
+     </layout>
+   </appender>
+   -->\r
+\r
+   <!-- Log events to JMS (requires a topic to be created)
+   <appender name="JMS" class="org.apache.log4j.net.JMSAppender">
+     <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
+     <param name="Threshold" value="ERROR"/>
+     <param name="TopicConnectionFactoryBindingName" value="java:/ConnectionFactory"/>
+     <param name="TopicBindingName" value="topic/MyErrorsTopic"/>
+   </appender>
+   -->\r
+\r
+   <!-- Log events through SNMP
+   <appender name="TRAP_LOG" class="org.apache.log4j.ext.SNMPTrapAppender">
+     <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
+     <param name="ImplementationClassName" value="org.apache.log4j.ext.JoeSNMPTrapSender"/>
+     <param name="ManagementHost" value="127.0.0.1"/>
+     <param name="ManagementHostTrapListenPort" value="162"/>
+     <param name="EnterpriseOID" value="1.3.6.1.4.1.24.0"/>
+     <param name="LocalIPAddress" value="127.0.0.1"/>
+     <param name="LocalTrapSendPort" value="161"/>
+     <param name="GenericTrapType" value="6"/>
+     <param name="SpecificTrapType" value="12345678"/>
+     <param name="CommunityString" value="public"/>
+     <param name="ForwardStackTraceWithTrap" value="true"/>
+     <param name="Threshold" value="DEBUG"/>
+     <param name="ApplicationTrapOID" value="1.3.6.1.4.1.24.12.10.22.64"/>
+     <layout class="org.apache.log4j.PatternLayout">
+            <param name="ConversionPattern" value="%d,%p,[%t],[%c],%m%n"/>
+     </layout>
+   </appender>
+   -->\r
+\r
+   <!--  Emit events as JMX notifications
+   <appender name="JMX" class="org.jboss.monitor.services.JMXNotificationAppender">
+      <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
+      
+      <param name="Threshold" value="WARN"/>
+      <param name="ObjectName" value="jboss.system:service=Logging,type=JMXNotificationAppender"/>
+      
+      <layout class="org.apache.log4j.PatternLayout">
+         <param name="ConversionPattern" value="%d %-5p [%c] %m"/>
+      </layout>
+   </appender>
+   -->\r
+
+   <!-- collectionspace appender -->
+   <appender name="CSLOG" class="org.jboss.logging.appender.FileAppender">
+      <errorHandler  class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
+     <param name="Append" value="false"/>
+     <param name="DatePattern" value="'.'yyyy-MM-dd"/>
+      <param name="File" value="${jboss.server.log.dir}/collectionspace.log"/>
+      <layout class="org.apache.log4j.PatternLayout">
+         <param name="ConversionPattern" value="%d %-5p [%t] [%c:%L] %m%n"/>
+      </layout>
+            <!--filter class="org.jboss.logging.filter.TCLFilter">
+         <param name="AcceptOnMatch" value="true"/>
+         <param name="DeployURL" value="cspace-services.war"/>
+      </filter> 
+      <filter class="org.apache.log4j.varia.DenyAllFilter"></filter-->
+   </appender>
+
+
+   \r
+   <!-- ================ -->\r
+   <!-- Limit categories -->\r
+   <!-- ================ -->\r
+   
+   <!-- Limit the org.apache category to INFO as its DEBUG is verbose -->\r
+    <category name="org.apache" additivity="true">\r
+      <priority value="INFO"/>\r
+   </category>
+   
+      <!-- Limit JBoss categories
+   <category name="org.jboss">
+      <priority value="INFO"/>
+   </category>
+   -->\r
+    <category name="org.jboss.security.auth">
+    <priority value="INFO"/>
+    </category>\r
+    <category name="com.arjuna"><priority value="INFO"/></category>\r
+    <category name="org.jboss.ejb3"><priority value="INFO"/></category>\r
+    <category name="org.jboss.ejb3.cache.simple.StatefulSessionFilePersistenceManager"><priority value="INFO"/></category>\r
+    <category name="org.jboss.seam">
+    <priority value="INFO"/>
+    </category>\r
+    <category name="org.jboss.seam.contexts.Contexts"><priority value="WARN"/></category>\r
+    <category name="org.jboss.seam.contexts.Lifecycle"><priority value="WARN"/></category>\r
+    <category name="org.jboss.mx.loading"><priority value="INFO"/></category>\r
+    <category name="org.jboss.remoting"><priority value="INFO"/></category>\r
+    <category name="org.jboss.resteasy"><priority value="INFO"/></category>\r
+    <category name="org.ajax4jsf"><priority value="INFO"/></category>\r
+    <category name="org.hibernate"><priority value="WARN"/></category>\r
+    <category name="org.hibernate.engine.StatefulPersistenceContext.ProxyWarnLog"><priority value="ERROR"/></category>\r
+    <category name="org.hibernate.impl.SessionFactoryObjectFactory"><priority value="ERROR"/></category>\r
+    <category name="org.hibernate.cache.EhCacheProvider"><priority value="ERROR"/></category>\r
+    <category name="org.hibernate.hql.ast.tree.FromElementType"><priority value="ERROR"/></category>\r
+    <category name="org.jbpm"><priority value="INFO"/></category>\r
+    <category name="org.jbpm.jpdl.xml.JpdlXmlReader"><priority value="ERROR"/></category>\r
+    <category name="org.compass.core.transaction"><priority value="INFO"/></category>\r
+    <category name="org.compass.core.lucene.engine.optimizer.ScheduledLuceneSearchEngineOptimizer"><priority value="INFO"/></category>\r
+    <category name="org.apache.jackrabbit.core.query.lucene.IndexMerger"><priority value="WARN"/></category>\r
+
+    <category name="org.nuxeo.ecm.platform.ui.web.auth"><priority value="INFO"/></category>\r
+    <category name="org.nuxeo.runtime.osgi.OSGiRuntimeService"><priority value="INFO"/></category>\r
+
+    <category name="org.apache.myfaces.renderkit.html.util.DefaultAddResource"><priority value="ERROR"/></category>\r
+    <category name="javax.enterprise.resource.webcontainer.jsf.renderkit"><priority value="INFO"/></category>\r
+    <category name="javax.enterprise.resource.webcontainer.jsf.application"><priority value="INFO"/></category>\r
+    <category name="javax.enterprise.resource.webcontainer.jsf.lifecycle"><priority value="INFO"/></category>
+    \r
+   <!-- Limit the jacorb category to WARN as its INFO is verbose -->\r
+   <category name="jacorb" additivity="true">\r
+      <priority value="WARN"/>\r
+   </category>\r
+   \r
+   <!-- Limit the org.jgroups category to WARN as its INFO is verbose -->\r
+   <category name="org.jgroups" additivity="true">\r
+      <priority value="WARN"/>\r
+   </category>\r
+   \r
+   <!-- Limit the org.quartz category to INFO as its DEBUG is verbose -->\r
+   <category name="org.quartz" additivity="true">\r
+      <priority value="INFO"/>\r
+   </category>\r
+\r
+   <!-- Limit JSF logging to DEBUG.  FINER and FINEST will not be logged -->\r
+   <category name="javax.enterprise.resource.webcontainer.jsf" additivity="true">\r
+      <priority value="INFO"/>\r
+   </category>\r
+                \r
+\r
+\r
+   <!-- Limit the JSR77 categories -->\r
+   <category name="org.jboss.management" additivity="true">\r
+      <priority value="INFO"/>\r
+   </category>\r
+\r
+   <!-- Show the evolution of the DataSource pool in the logs [inUse/Available/Max]
+   <category name="org.jboss.resource.connectionmanager.JBossManagedConnectionPool">
+     <priority value="TRACE"/>
+   </category>
+   -->\r
+   \r
+   <!-- Limit the org.jboss.serial (jboss-serialization) to INFO as its DEBUG is verbose -->\r
+   <category name="org.jboss.serial" additivity="true">\r
+      <priority value="INFO"/>\r
+   </category>\r
+   \r
+   <!-- Decrease the priority threshold for the org.jboss.varia category
+   <category name="org.jboss.varia">
+     <priority value="DEBUG"/>
+   </category>
+   -->\r
+\r
+   <!-- Enable JBossWS message tracing
+   <category name="org.jboss.ws.core.MessageTrace">
+    <priority value="TRACE"/>
+   </category>
+   -->\r
+\r
+   <!--
+      | An example of enabling the custom TRACE level priority that is used
+      | by the JBoss internals to diagnose low level details. This example
+      | turns on TRACE level msgs for the org.jboss.ejb.plugins package and its
+      | subpackages. This will produce A LOT of logging output.
+      |
+      | Note: since jboss AS 4.2.x, the trace level is supported natively by
+      | log4j, so although the custom org.jboss.logging.XLevel priority will
+      | still work, there is no need to use it. The two examples that follow
+      | will both enable trace logging.
+   <category name="org.jboss.system">
+     <priority value="TRACE" class="org.jboss.logging.XLevel"/>
+   </category>
+   <category name="org.jboss.ejb.plugins">
+     <priority value="TRACE"/>
+   </category>
+   -->\r
+  \r
+   <!--
+       | Logs these events to SNMP:
+           - server starts/stops
+           - cluster evolution (node death/startup)
+           - When an EJB archive is deployed (and associated verified messages)
+           - When an EAR archive is deployed
+        
+   <category name="org.jboss.system.server.Server">
+     <priority value="INFO" />
+     <appender-ref ref="TRAP_LOG"/>
+   </category>
+  
+   <category name="org.jboss.ha.framework.interfaces.HAPartition.lifecycle">
+     <priority value="INFO" />
+     <appender-ref ref="TRAP_LOG"/>
+   </category>
+
+   <category name="org.jboss.deployment.MainDeployer">
+     <priority value="ERROR" />
+     <appender-ref ref="TRAP_LOG"/>
+   </category>
+   
+   <category name="org.jboss.ejb.EJBDeployer">
+     <priority value="INFO" />
+     <appender-ref ref="TRAP_LOG"/>
+   </category>
+   
+   <category name="org.jboss.deployment.EARDeployer">
+     <priority value="INFO" />
+     <appender-ref ref="TRAP_LOG"/>
+   </category>
+   -->\r
+\r
+   <!-- Clustering logging -->\r
+   <!-- Uncomment the following to redirect the org.jgroups and
+      org.jboss.ha categories to a cluster.log file.
+
+   <appender name="CLUSTER" class="org.jboss.logging.appender.RollingFileAppender">
+     <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
+     <param name="File" value="${jboss.server.log.dir}/cluster.log"/>
+     <param name="Append" value="false"/>
+     <param name="MaxFileSize" value="500KB"/>
+     <param name="MaxBackupIndex" value="1"/>
+
+     <layout class="org.apache.log4j.PatternLayout">
+       <param name="ConversionPattern" value="%d %-5p [%c] %m%n"/>
+     </layout>
+   </appender>
+   <category name="org.jgroups">
+     <priority value="DEBUG" />
+     <appender-ref ref="CLUSTER"/>
+   </category>
+   <category name="org.jboss.ha">
+     <priority value="DEBUG" />
+     <appender-ref ref="CLUSTER"/>
+   </category>
+   -->\r
+
+
+
+   <category name="org.springframework">
+     <priority value="INFO" />
+     <appender-ref ref="CSLOG"/>
+   </category>
+
+   <category name="org.springframework.security">
+     <priority value="INFO" />
+     <appender-ref ref="CSLOG"/>
+   </category>
+
+   <category name="org.nuxeo">
+     <priority value="INFO" />
+     <appender-ref ref="CSLOG"/>
+   </category>
+
+   <category name="nuxeo">
+     <priority value="INFO" />
+     <appender-ref ref="CSLOG"/>
+   </category>
+
+   <category name="org.collectionspace">
+     <priority value="DEBUG" />
+     <appender-ref ref="CSLOG"/>
+   </category>
+
+   \r
+   <!-- ======================= -->\r
+   <!-- Setup the Root category -->\r
+   <!-- ======================= -->\r
+\r
+   <root>\r
+      <appender-ref ref="CONSOLE"/>\r
+      <appender-ref ref="FILE"/>\r
+      <appender-ref ref="CSLOG"/>\r
+   </root>\r
+\r
+</log4j:configuration>
index c7e72736f301660478896dc2122d8f5df2472229..ec785541b11913443eeb7beed9a41e0cd1cbe8c7 100644 (file)
@@ -3,9 +3,11 @@
  */
 package org.collectionspace.services.common;
 
+import org.collectionspace.services.common.log.CollectionSpaceLog4jRepositorySelector;
 import javax.servlet.ServletContext;
 import javax.servlet.ServletContextEvent;
 import javax.servlet.ServletContextListener;
+import org.apache.log4j.LogManager;
 
 /**
  * CollectionSpaceServiceContextListener is a ServletContextListener that helps initialize
@@ -15,11 +17,18 @@ public class CollectionSpaceServiceContextListener implements ServletContextList
 
     @Override
     public void contextInitialized(ServletContextEvent event) {
-        try{
+        try {
             ServletContext sc = event.getServletContext();
+
+            //create repository select to stop jboss from jamming
+            //our log on top of theirs
+            LogManager.setRepositorySelector(new CollectionSpaceLog4jRepositorySelector(),
+                    null);
+
             ServiceMain svcMain = ServiceMain.getInstance(); //first access initializes as well
             svcMain.retrieveAllWorkspaceIds();
-        }catch(Exception e){
+
+        } catch (Exception e) {
             e.printStackTrace();
             //fail here
             throw new RuntimeException(e);
diff --git a/services/common/src/main/java/org/collectionspace/services/common/log/CollectionSpaceLog4jRepositorySelector.java b/services/common/src/main/java/org/collectionspace/services/common/log/CollectionSpaceLog4jRepositorySelector.java
new file mode 100644 (file)
index 0000000..debb879
--- /dev/null
@@ -0,0 +1,112 @@
+/**
+ *  This document is a part of the source code and related artifacts
+ *  for CollectionSpace, an open source collections management system
+ *  for museums and related institutions:
+
+ *  http://www.collectionspace.org
+ *  http://wiki.collectionspace.org
+
+ *  Copyright 2009 University of California at Berkeley
+
+ *  Licensed under the Educational Community License (ECL), Version 2.0.
+ *  You may not use this file except in compliance with this License.
+
+ *  You may obtain a copy of the ECL 2.0 License at
+
+ *  https://source.collectionspace.org/collection-space/LICENSE.txt
+
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *//**
+ *  This document is a part of the source code and related artifacts
+ *  for CollectionSpace, an open source collections management system
+ *  for museums and related institutions:
+
+ *  http://www.collectionspace.org
+ *  http://wiki.collectionspace.org
+
+ *  Copyright 2009 University of California at Berkeley
+
+ *  Licensed under the Educational Community License (ECL), Version 2.0.
+ *  You may not use this file except in compliance with this License.
+
+ *  You may obtain a copy of the ECL 2.0 License at
+
+ *  https://source.collectionspace.org/collection-space/LICENSE.txt
+
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package org.collectionspace.services.common.log;
+
+import java.util.Hashtable;
+
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+import org.apache.log4j.Hierarchy;
+import org.apache.log4j.Level;
+import org.apache.log4j.spi.LoggerRepository;
+import org.apache.log4j.spi.RepositorySelector;
+import org.apache.log4j.spi.RootLogger;
+
+/**
+ * CollectionSpaceLog4jRepositorySelector is a CollectionSpace
+ * specific log4j repository selector. See Ceki's solution
+ * for more details
+ * Courtsey Ceki Gulcu http://articles.qos.ch/sc.html
+ */
+/** JNDI based Repository selector */
+public class CollectionSpaceLog4jRepositorySelector implements RepositorySelector {
+
+    // key: name of logging context,
+    // value: Hierarchy instance
+    private Hashtable ht;
+    private Hierarchy defaultHierarchy;
+
+    public CollectionSpaceLog4jRepositorySelector() {
+        ht = new Hashtable();
+        defaultHierarchy = new Hierarchy(new RootLogger(Level.DEBUG));
+    }
+
+    // the returned value is guaranteed to be non-null
+    public LoggerRepository getLoggerRepository() {
+        String loggingContextName = null;
+
+        try {
+            Context ctx = new InitialContext();
+            loggingContextName = (String) ctx.lookup("java:comp/env/cspace-logging-context");
+        } catch (NamingException ne) {
+            // we can't log here
+        }
+
+        if (loggingContextName == null) {
+            return defaultHierarchy;
+        } else {
+            Hierarchy h = (Hierarchy) ht.get(loggingContextName);
+            if (h == null) {
+                h = new Hierarchy(new RootLogger(Level.DEBUG));
+                ht.put(loggingContextName, h);
+            }
+            return h;
+        }
+    }
+
+    /**
+     * The Container should remove the entry when the web-application
+     * is removed or restarted.
+     * */
+    public void remove(ClassLoader cl) {
+        ht.remove(cl);
+    }
+}