From 1d759accccf40fd9c781e0bfaac3d892724e4150 Mon Sep 17 00:00:00 2001 From: Richard Millet Date: Tue, 21 Dec 2010 00:57:18 +0000 Subject: [PATCH] CSPACE-933: Changes to fix some of our logging config issues. --- .../CollectionSpaceJaxRsApplication.java | 10 +-- services/authentication/service/pom.xml | 2 - .../jaas/CSpaceJBossDBLoginModule.java | 16 +++-- .../realm/db/CSpaceDbRealm.java | 65 ++++++++++-------- .../src/main/resources/log4j.properties | 21 ------ services/common/build.xml | 19 ++++- services/common/lib/slf4j/slf4j-api-1.5.2.jar | Bin 0 -> 17384 bytes .../common/lib/slf4j/slf4j-log4j12-1.5.2.jar | Bin 0 -> 9501 bytes ...CollectionSpaceServiceContextListener.java | 4 +- .../services/common/FileUtils.java | 7 -- .../common/document/DocumentUtils.java | 7 -- .../common/imaging/nuxeo/NuxeoImageUtils.java | 7 -- .../services/common/profile/Profiler.java | 15 ++-- services/id/service/pom.xml | 4 +- 14 files changed, 71 insertions(+), 106 deletions(-) delete mode 100644 services/authentication/service/src/main/resources/log4j.properties create mode 100644 services/common/lib/slf4j/slf4j-api-1.5.2.jar create mode 100644 services/common/lib/slf4j/slf4j-log4j12-1.5.2.jar diff --git a/services/JaxRsServiceProvider/src/main/java/org/collectionspace/services/jaxrs/CollectionSpaceJaxRsApplication.java b/services/JaxRsServiceProvider/src/main/java/org/collectionspace/services/jaxrs/CollectionSpaceJaxRsApplication.java index 47173ab66..590ca0247 100644 --- a/services/JaxRsServiceProvider/src/main/java/org/collectionspace/services/jaxrs/CollectionSpaceJaxRsApplication.java +++ b/services/JaxRsServiceProvider/src/main/java/org/collectionspace/services/jaxrs/CollectionSpaceJaxRsApplication.java @@ -70,15 +70,7 @@ public class CollectionSpaceJaxRsApplication extends Application { private Set singletons = new HashSet(); private Set> empty = new HashSet>(); - public CollectionSpaceJaxRsApplication() { - // - // Setup the profiler logger - // - Profiler.setup(); - DocumentUtils.loggerSetup(); - NuxeoImageUtils.loggerSetup(); - FileUtils.loggerSetup(); - + public CollectionSpaceJaxRsApplication() { // // Instantiate all our JaxRS resources // diff --git a/services/authentication/service/pom.xml b/services/authentication/service/pom.xml index 0b49d06c7..7448f2001 100644 --- a/services/authentication/service/pom.xml +++ b/services/authentication/service/pom.xml @@ -25,12 +25,10 @@ org.slf4j slf4j-api - test org.slf4j slf4j-log4j12 - test commons-logging diff --git a/services/authentication/service/src/main/java/org/collectionspace/authentication/jaas/CSpaceJBossDBLoginModule.java b/services/authentication/service/src/main/java/org/collectionspace/authentication/jaas/CSpaceJBossDBLoginModule.java index c9c5452ab..b9384cc51 100644 --- a/services/authentication/service/src/main/java/org/collectionspace/authentication/jaas/CSpaceJBossDBLoginModule.java +++ b/services/authentication/service/src/main/java/org/collectionspace/authentication/jaas/CSpaceJBossDBLoginModule.java @@ -23,24 +23,30 @@ */ package org.collectionspace.authentication.jaas; -import java.security.acl.Group; import java.util.ArrayList; import java.util.Collection; import java.util.List; - import java.util.Map; + +import java.security.acl.Group; import javax.security.auth.Subject; import javax.security.auth.callback.CallbackHandler; import javax.security.auth.login.LoginException; + import org.collectionspace.authentication.realm.db.CSpaceDbRealm; import org.jboss.security.auth.spi.UsernamePasswordLoginModule; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + /** * CollectionSpace default identity provider supporting multi-tenancy * @author */ public class CSpaceJBossDBLoginModule extends UsernamePasswordLoginModule { + private Logger logger = LoggerFactory.getLogger(CSpaceJBossDBLoginModule.class); + private CSpaceDbRealm realm; /** @@ -61,8 +67,6 @@ public class CSpaceJBossDBLoginModule extends UsernamePasswordLoginModule { super.initialize(subject, callbackHandler, sharedState, options); realm = new CSpaceDbRealm(options); } - //disabled due to classloading problem -// private Logger logger = LoggerFactory.getLogger(CSpaceDBLoginModule.class); protected String getUsersPassword() throws LoginException { @@ -71,8 +75,8 @@ public class CSpaceJBossDBLoginModule extends UsernamePasswordLoginModule { try { password = realm.getUsersPassword(username); password = convertRawPassword(password); - if (log.isDebugEnabled()) { - log.debug("Obtained user password"); + if (logger.isDebugEnabled()) { + logger.debug("Obtained user password for: " + username); } } catch (LoginException lex) { throw lex; diff --git a/services/authentication/service/src/main/java/org/collectionspace/authentication/realm/db/CSpaceDbRealm.java b/services/authentication/service/src/main/java/org/collectionspace/authentication/realm/db/CSpaceDbRealm.java index b8be3f5f9..fe3955cb7 100644 --- a/services/authentication/service/src/main/java/org/collectionspace/authentication/realm/db/CSpaceDbRealm.java +++ b/services/authentication/service/src/main/java/org/collectionspace/authentication/realm/db/CSpaceDbRealm.java @@ -65,18 +65,23 @@ import javax.security.auth.login.FailedLoginException; import javax.security.auth.login.LoginException; import javax.sql.DataSource; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; +//import org.apache.commons.logging.Log; +//import org.apache.commons.logging.LogFactory; + import org.collectionspace.authentication.CSpaceTenant; import org.collectionspace.authentication.realm.CSpaceRealm; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + /** * CSpaceDbRealm provides access to user, password, role, tenant database * @author */ public class CSpaceDbRealm implements CSpaceRealm { - private static Log log = LogFactory.getLog(CSpaceDbRealm.class); + private Logger logger = LoggerFactory.getLogger(CSpaceDbRealm.class); + private String datasourceName; private String principalsQuery; private String rolesQuery; @@ -108,11 +113,11 @@ public class CSpaceDbRealm implements CSpaceRealm { if (tmp != null) { suspendResume = Boolean.valueOf(tmp.toString()).booleanValue(); } - if (log.isTraceEnabled()) { - log.trace("DatabaseServerLoginModule, dsJndiName=" + datasourceName); - log.trace("principalsQuery=" + principalsQuery); - log.trace("rolesQuery=" + rolesQuery); - log.trace("suspendResume=" + suspendResume); + if (logger.isTraceEnabled()) { + logger.trace("DatabaseServerLoginModule, dsJndiName=" + datasourceName); + logger.trace("principalsQuery=" + principalsQuery); + logger.trace("rolesQuery=" + rolesQuery); + logger.trace("suspendResume=" + suspendResume); } } @@ -127,15 +132,15 @@ public class CSpaceDbRealm implements CSpaceRealm { try { conn = getConnection(); // Get the password - if (log.isDebugEnabled()) { - log.debug("Executing query: " + principalsQuery + ", with username: " + username); + if (logger.isDebugEnabled()) { + logger.debug("Executing query: " + principalsQuery + ", with username: " + username); } ps = conn.prepareStatement(principalsQuery); ps.setString(1, username); rs = ps.executeQuery(); if (rs.next() == false) { - if (log.isDebugEnabled()) { - log.debug(principalsQuery + " returned no matches from db"); + if (logger.isDebugEnabled()) { + logger.debug(principalsQuery + " returned no matches from db"); } throw new FailedLoginException("No matching username found"); } @@ -180,8 +185,8 @@ public class CSpaceDbRealm implements CSpaceRealm { @Override public Collection getRoles(String username, String principalClassName, String groupClassName) throws LoginException { - if (log.isDebugEnabled()) { - log.debug("getRoleSets using rolesQuery: " + rolesQuery + ", username: " + username); + if (logger.isDebugEnabled()) { + logger.debug("getRoleSets using rolesQuery: " + rolesQuery + ", username: " + username); } Connection conn = null; @@ -192,8 +197,8 @@ public class CSpaceDbRealm implements CSpaceRealm { try { conn = getConnection(); // Get the user role names - if (log.isDebugEnabled()) { - log.debug("Executing query: " + rolesQuery + ", with username: " + username); + if (logger.isDebugEnabled()) { + logger.debug("Executing query: " + rolesQuery + ", with username: " + username); } ps = conn.prepareStatement(rolesQuery); @@ -204,8 +209,8 @@ public class CSpaceDbRealm implements CSpaceRealm { } rs = ps.executeQuery(); if (rs.next() == false) { - if (log.isDebugEnabled()) { - log.debug("No roles found"); + if (logger.isDebugEnabled()) { + logger.debug("No roles found"); } // if(aslm.getUnauthenticatedIdentity() == null){ // throw new FailedLoginException("No matching username found in Roles"); @@ -234,13 +239,13 @@ public class CSpaceDbRealm implements CSpaceRealm { try { Principal p = createPrincipal(principalClassName, roleName); - if (log.isDebugEnabled()) { - log.debug("Assign user to role " + roleName); + if (logger.isDebugEnabled()) { + logger.debug("Assign user to role " + roleName); } group.addMember(p); } catch (Exception e) { - log.error("Failed to create principal: " + roleName + " " + e.toString()); + logger.error("Failed to create principal: " + roleName + " " + e.toString()); } } while (rs.next()); @@ -286,8 +291,8 @@ public class CSpaceDbRealm implements CSpaceRealm { @Override public Collection getTenants(String username, String groupClassName) throws LoginException { - if (log.isDebugEnabled()) { - log.debug("getTenants using tenantsQuery: " + tenantsQuery + ", username: " + username); + if (logger.isDebugEnabled()) { + logger.debug("getTenants using tenantsQuery: " + tenantsQuery + ", username: " + username); } Connection conn = null; @@ -298,8 +303,8 @@ public class CSpaceDbRealm implements CSpaceRealm { try { conn = getConnection(); // Get the user role names - if (log.isDebugEnabled()) { - log.debug("Executing query: " + tenantsQuery + ", with username: " + username); + if (logger.isDebugEnabled()) { + logger.debug("Executing query: " + tenantsQuery + ", with username: " + username); } ps = conn.prepareStatement(tenantsQuery); @@ -310,8 +315,8 @@ public class CSpaceDbRealm implements CSpaceRealm { } rs = ps.executeQuery(); if (rs.next() == false) { - if (log.isDebugEnabled()) { - log.debug("No tenants found"); + if (logger.isDebugEnabled()) { + logger.debug("No tenants found"); } // We are running with an unauthenticatedIdentity so create an // empty Tenants set and return. @@ -337,13 +342,13 @@ public class CSpaceDbRealm implements CSpaceRealm { try { Principal p = createTenant(tenantName, tenantId); - if (log.isDebugEnabled()) { - log.debug("Assign user to tenant " + tenantName); + if (logger.isDebugEnabled()) { + logger.debug("Assign user to tenant " + tenantName); } group.addMember(p); } catch (Exception e) { - log.error("Failed to create tenant: " + tenantName + " " + e.toString()); + logger.error("Failed to create tenant: " + tenantName + " " + e.toString()); } } while (rs.next()); } catch (SQLException ex) { diff --git a/services/authentication/service/src/main/resources/log4j.properties b/services/authentication/service/src/main/resources/log4j.properties deleted file mode 100644 index 01d5b6faf..000000000 --- a/services/authentication/service/src/main/resources/log4j.properties +++ /dev/null @@ -1,21 +0,0 @@ -log4j.rootLogger=debug, stdout, R - -log4j.appender.stdout=org.apache.log4j.ConsoleAppender -log4j.appender.stdout.layout=org.apache.log4j.PatternLayout - -# Pattern to output the caller's file name and line number. -log4j.appender.stdout.layout.ConversionPattern=%d %-5p [%t] [%c:%L] %m%n - -log4j.appender.R=org.apache.log4j.RollingFileAppender -log4j.appender.R.File=${jboss.server.log.dir}/server.log - -log4j.appender.R.MaxFileSize=100KB -# Keep one backup file -log4j.appender.R.MaxBackupIndex=1 - -log4j.appender.R.layout=org.apache.log4j.PatternLayout -log4j.appender.R.layout.ConversionPattern=%d %-5p [%t] [%c:%L] %m%n - -#packages -log4j.logger.org.nuxeo=WARN -log4j.logger.org.collectionspace=DEBUG \ No newline at end of file diff --git a/services/common/build.xml b/services/common/build.xml index 26a875f43..96fd57012 100644 --- a/services/common/build.xml +++ b/services/common/build.xml @@ -139,6 +139,13 @@ + + + + + + + @@ -161,6 +169,7 @@ + @@ -168,15 +177,21 @@ - - + + + + + + + diff --git a/services/common/lib/slf4j/slf4j-api-1.5.2.jar b/services/common/lib/slf4j/slf4j-api-1.5.2.jar new file mode 100644 index 0000000000000000000000000000000000000000..43828660182ef23fc91f0525594e3de74e4aa911 GIT binary patch literal 17384 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 L5GT~gzyJClb)q1e literal 0 HcmV?d00001 diff --git a/services/common/src/main/java/org/collectionspace/services/common/CollectionSpaceServiceContextListener.java b/services/common/src/main/java/org/collectionspace/services/common/CollectionSpaceServiceContextListener.java index ec785541b..c089b5e78 100644 --- a/services/common/src/main/java/org/collectionspace/services/common/CollectionSpaceServiceContextListener.java +++ b/services/common/src/main/java/org/collectionspace/services/common/CollectionSpaceServiceContextListener.java @@ -22,8 +22,8 @@ public class CollectionSpaceServiceContextListener implements ServletContextList //create repository select to stop jboss from jamming //our log on top of theirs - LogManager.setRepositorySelector(new CollectionSpaceLog4jRepositorySelector(), - null); +// LogManager.setRepositorySelector(new CollectionSpaceLog4jRepositorySelector(), +// null); ServiceMain svcMain = ServiceMain.getInstance(); //first access initializes as well svcMain.retrieveAllWorkspaceIds(); diff --git a/services/common/src/main/java/org/collectionspace/services/common/FileUtils.java b/services/common/src/main/java/org/collectionspace/services/common/FileUtils.java index 8b88117e1..c14be1559 100644 --- a/services/common/src/main/java/org/collectionspace/services/common/FileUtils.java +++ b/services/common/src/main/java/org/collectionspace/services/common/FileUtils.java @@ -29,13 +29,6 @@ public class FileUtils { private static final String TMP_FILE_PREFIX = "cspace_blob_"; - /** - * Logger setup. - */ - public static void loggerSetup() { - //empty method - } - static public File createTmpFile(InputStream streamIn, String filePrefix) { File result = null; diff --git a/services/common/src/main/java/org/collectionspace/services/common/document/DocumentUtils.java b/services/common/src/main/java/org/collectionspace/services/common/document/DocumentUtils.java index 1e276a0ae..c8d297891 100644 --- a/services/common/src/main/java/org/collectionspace/services/common/document/DocumentUtils.java +++ b/services/common/src/main/java/org/collectionspace/services/common/document/DocumentUtils.java @@ -225,13 +225,6 @@ public class DocumentUtils { return schemaFile; } - /** - * Logger setup. - */ - public static void loggerSetup() { - //empty method - } - /** * parseProperties given payload to create XML document. this * method also closes given stream after parsing. diff --git a/services/common/src/main/java/org/collectionspace/services/common/imaging/nuxeo/NuxeoImageUtils.java b/services/common/src/main/java/org/collectionspace/services/common/imaging/nuxeo/NuxeoImageUtils.java index 5cbfc5316..38e35d170 100644 --- a/services/common/src/main/java/org/collectionspace/services/common/imaging/nuxeo/NuxeoImageUtils.java +++ b/services/common/src/main/java/org/collectionspace/services/common/imaging/nuxeo/NuxeoImageUtils.java @@ -159,13 +159,6 @@ public class NuxeoImageUtils { //empty constructor } - /** - * Logger setup. - */ - public static void loggerSetup() { - //empty method - } - private static String toStringPictureView(PictureView pictureView) { StringBuffer strBuffer = new StringBuffer(); strBuffer.append("Description: " + pictureView.getDescription() + '\n'); diff --git a/services/common/src/main/java/org/collectionspace/services/common/profile/Profiler.java b/services/common/src/main/java/org/collectionspace/services/common/profile/Profiler.java index b31ecd8b2..1ea5ff8b1 100644 --- a/services/common/src/main/java/org/collectionspace/services/common/profile/Profiler.java +++ b/services/common/src/main/java/org/collectionspace/services/common/profile/Profiler.java @@ -89,17 +89,6 @@ public class Profiler { init(messagePrefix, messageIndent); } - /* - * For some reason, we need to call this method "early" at startup time for our - * Logger instance to get created correctly. FIXME: REM - Can we figure this out and fix it? - */ - /** - * Setup. - */ - public static void setup() { - //do nothing - } - private void init(String messagePrefix, int messageIndent) { this.setMessagePrefix(messagePrefix); this.setMessageIndent(messageIndent); @@ -189,6 +178,10 @@ public class Profiler { if (getLogger().isDebugEnabled()) { getLogger().debug(formatLogMessage(msg)); } + if (getLogger().isTraceEnabled()) { + getLogger().trace("[TRACE] " + formatLogMessage(msg)); + } + } /** diff --git a/services/id/service/pom.xml b/services/id/service/pom.xml index 397637b20..640cf9fe6 100644 --- a/services/id/service/pom.xml +++ b/services/id/service/pom.xml @@ -106,12 +106,12 @@ resteasy-multipart-provider - + -- 2.47.3