--- /dev/null
+<?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>
--- /dev/null
+/**
+ * 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);
+ }
+}