diff --git a/amps/ags/rm-automation/rm-automation-community-rest-api/pom.xml b/amps/ags/rm-automation/rm-automation-community-rest-api/pom.xml index 81d8d5c6e6..9f4511c62d 100644 --- a/amps/ags/rm-automation/rm-automation-community-rest-api/pom.xml +++ b/amps/ags/rm-automation/rm-automation-community-rest-api/pom.xml @@ -43,9 +43,15 @@ - org.slf4j - slf4j-reload4j - ${dependency.slf4j.version} + org.apache.logging.log4j + log4j-slf4j2-impl + ${dependency.log4j.version} + test + + + org.apache.logging.log4j + log4j-core + ${dependency.log4j.version} test @@ -62,6 +68,17 @@ org.alfresco.tas utility ${dependency.tas-utility.version} + + + + ch.qos.reload4j + reload4j + + + org.slf4j + slf4j-reload4j + + org.projectlombok diff --git a/amps/ags/rm-automation/rm-automation-community-rest-api/src/test/resources/log4j.properties b/amps/ags/rm-automation/rm-automation-community-rest-api/src/test/resources/log4j.properties deleted file mode 100644 index e01a70def8..0000000000 --- a/amps/ags/rm-automation/rm-automation-community-rest-api/src/test/resources/log4j.properties +++ /dev/null @@ -1,11 +0,0 @@ -# Root logger option -log4j.rootLogger=INFO, file - -# Direct log messages to a log file -log4j.appender.file=org.apache.log4j.RollingFileAppender -log4j.appender.file.File=./target/reports/rm-automation-community-rest-api.log -log4j.appender.file.MaxBackupIndex=10 -log4j.appender.file.layout=org.apache.log4j.PatternLayout -log4j.appender.file.layout.ConversionPattern=[%t] %d{HH:mm:ss} %-5p %c{1}:%L - %m%n - -log4j.logger.com.example=debug diff --git a/amps/ags/rm-automation/rm-automation-community-rest-api/src/test/resources/log4j2.properties b/amps/ags/rm-automation/rm-automation-community-rest-api/src/test/resources/log4j2.properties new file mode 100644 index 0000000000..90db838a7b --- /dev/null +++ b/amps/ags/rm-automation/rm-automation-community-rest-api/src/test/resources/log4j2.properties @@ -0,0 +1,20 @@ +###### Root Logger ####### +rootLogger.level=info +rootLogger.appenderRef.rolling.ref=RollingAppender + +###### File appender definition ####### +appender.rolling.type=RollingFile +appender.rolling.name=RollingAppender +appender.rolling.fileName=target/reports/rm-automation-community-rest-api.log +appender.rolling.filePattern=target/reports/rm-automation-community-rest-api.log.%i +appender.rolling.layout.type=PatternLayout +appender.rolling.layout.pattern=[%t] %d{HH:mm:ss} %-5p %c{1}:%L - %replace{%m}{[\r\n]+}{}%n +appender.rolling.policies.type=Policies +appender.rolling.policies.size.type=SizeBasedTriggeringPolicy +appender.rolling.policies.size.size=10MB +appender.rolling.strategy.type=DefaultRolloverStrategy +appender.rolling.strategy.max=10 + +###### Loggers definitions ####### +logger.com-example.name=com.example +logger.com-example.level=debug \ No newline at end of file diff --git a/amps/ags/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/log4j.properties b/amps/ags/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/log4j.properties deleted file mode 100644 index f5ecef752f..0000000000 --- a/amps/ags/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/log4j.properties +++ /dev/null @@ -1,60 +0,0 @@ -# -# Warnings -# -log4j.logger.org.alfresco.module.org_alfresco_module_rm.caveat=warn -log4j.logger.org.alfresco.module.org_alfresco_module_rm.security.RMMethodSecurityPostProcessor=warn - -# -# Module patches -# -log4j.logger.org.alfresco.module.org_alfresco_module_rm.patch=info - -# -# Set to 'debug' to see details of capability failures when AccessDenied is thrown. May be -# removed to enhance performance. -# -log4j.logger.org.alfresco.module.org_alfresco_module_rm.security.RMMethodSecurityInterceptor=info - -# -# RM permission debug -# -#log4j.logger.org.alfresco.module.org_alfresco_module_rm.capability.RMEntryVoter=debug -#log4j.logger.org.alfresco.module.org_alfresco_module_rm.capability.RMAfterInvocationProvider=debug -#log4j.logger.org.alfresco.module.org_alfresco_module_rm.capability.declarative=debug - -# -# RM Audit service debug -# -#log4j.logger.org.alfresco.module.org_alfresco_module_rm.audit.RecordsManagementAuditService=debug - -# -# Job debug -# -#log4j.logger.org.alfresco.module.org_alfresco_module_rm.job=debug - -# -# Script logging level -# -log4j.logger.org.alfresco.repo.jscript.ScriptLogger=error - -# -# Behaviour debug -# -log4j.logger.org.alfresco.repo.policy.annotation.AnnotatedBehaviourPostProcessor=info -log4j.logger.org.alfresco.module.org_alfresco_module_rm.behaviour.BaseBehaviourBean=info - -# -# Patch debug -# -log4j.logger.org.alfresco.module.org_alfresco_module_rm.patch=info -# -# RM Audit service debug -# -#log4j.logger.org.alfresco.module.org_alfresco_module_rm.audit.RecordsManagementAuditService=debug - -# -# Job debug -# -#log4j.logger.org.alfresco.module.org_alfresco_module_rm.job=debug -log4j.logger.org.alfresco.repo.web.scripts.roles.DynamicAuthoritiesGet=info -log4j.logger.org.alfresco.module.org_alfresco_module_rm.query.RecordsManagementQueryDAOImpl=info \ No newline at end of file diff --git a/amps/ags/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/log4j2.properties b/amps/ags/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/log4j2.properties new file mode 100644 index 0000000000..f387c90aaa --- /dev/null +++ b/amps/ags/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/log4j2.properties @@ -0,0 +1,50 @@ +# Warnings +logger.alfresco-module-org_alfresco_module_rm-caveat.name=org.alfresco.module.org_alfresco_module_rm.caveat +logger.alfresco-module-org_alfresco_module_rm-caveat.level=warn + +logger.alfresco-module-org_alfresco_module_rm-security-RMMethodSecurityPostProcessor.name=org.alfresco.module.org_alfresco_module_rm.security.RMMethodSecurityPostProcessor +logger.alfresco-module-org_alfresco_module_rm-security-RMMethodSecurityPostProcessor.level=warn + +# Module patches +logger.alfresco-module-org_alfresco_module_rm-patch.name=org.alfresco.module.org_alfresco_module_rm.patch +logger.alfresco-module-org_alfresco_module_rm-patch.level=info + +# Set to 'debug' to see details of capability failures when AccessDenied is thrown. May be +# removed to enhance performance. +logger.alfresco-module-org_alfresco_module_rm-security-RMMethodSecurityInterceptor.name=org.alfresco.module.org_alfresco_module_rm.security.RMMethodSecurityInterceptor +logger.alfresco-module-org_alfresco_module_rm-security-RMMethodSecurityInterceptor.level=info + +# RM permission debug +#logger.alfresco-module-org_alfresco_module_rm-capability-RMEntryVoter.name=org.alfresco.module.org_alfresco_module_rm.capability.RMEntryVoter +#logger.alfresco-module-org_alfresco_module_rm-capability-RMEntryVoter.level=debug + +#logger.alfresco-module-org_alfresco_module_rm-capability-RMAfterInvocationProvider.name=org.alfresco.module.org_alfresco_module_rm.capability.RMAfterInvocationProvider +#logger.alfresco-module-org_alfresco_module_rm-capability-RMAfterInvocationProvider.level=debug + +#logger.alfresco-module-org_alfresco_module_rm-capability-declarative.name=org.alfresco.module.org_alfresco_module_rm.capability.declarative +#logger.alfresco-module-org_alfresco_module_rm-capability-declarative.level=debug + +# RM Audit service debug +#logger.alfresco-module-org_alfresco_module_rm-audit-RecordsManagementAuditService.name=org.alfresco.module.org_alfresco_module_rm.audit.RecordsManagementAuditService +#logger.alfresco-module-org_alfresco_module_rm-audit-RecordsManagementAuditService.level=debug + +# Job debug +#logger.alfresco-module-org_alfresco_module_rm-job.name=org.alfresco.module.org_alfresco_module_rm.job +#logger.alfresco-module-org_alfresco_module_rm-job.level=debug + +# Script logging level +logger.alfresco-repo-jscript-ScriptLogger.name=org.alfresco.repo.jscript.ScriptLogger +logger.alfresco-repo-jscript-ScriptLogger.level=error + +# Behaviour debug +logger.alfresco-repo-policy-annotation-AnnotatedBehaviourPostProcessor.name=org.alfresco.repo.policy.annotation.AnnotatedBehaviourPostProcessor +logger.alfresco-repo-policy-annotation-AnnotatedBehaviourPostProcessor.level=info + +logger.alfresco-module-org_alfresco_module_rm-behaviour-BaseBehaviourBean.name=org.alfresco.module.org_alfresco_module_rm.behaviour.BaseBehaviourBean +logger.alfresco-module-org_alfresco_module_rm-behaviour-BaseBehaviourBean.level=info + +logger.alfresco-repo-web-scripts-roles-DynamicAuthoritiesGet.name=org.alfresco.repo.web.scripts.roles.DynamicAuthoritiesGet +logger.alfresco-repo-web-scripts-roles-DynamicAuthoritiesGet.level=info + +logger.alfresco-module-org_alfresco_module_rm-query-RecordsManagementQueryDAOImpl.name=org.alfresco.module.org_alfresco_module_rm.query.RecordsManagementQueryDAOImpl +logger.alfresco-module-org_alfresco_module_rm-query-RecordsManagementQueryDAOImpl.level=info diff --git a/core/pom.xml b/core/pom.xml index 893ed93aac..ff907d343c 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -54,9 +54,14 @@ asl - ch.qos.reload4j - reload4j - 1.2.18.3 + org.apache.logging.log4j + log4j-api + ${dependency.log4j.version} + + + org.apache.logging.log4j + log4j-core + ${dependency.log4j.version} org.json @@ -113,8 +118,8 @@ - org.slf4j - slf4j-reload4j + org.apache.logging.log4j + log4j-slf4j2-impl test diff --git a/core/src/main/java/org/alfresco/util/log/NDC.java b/core/src/main/java/org/alfresco/util/log/NDC.java index 302f5a46ce..50a440069a 100644 --- a/core/src/main/java/org/alfresco/util/log/NDC.java +++ b/core/src/main/java/org/alfresco/util/log/NDC.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005-2010 Alfresco Software Limited. + * Copyright (C) 2005-2022 Alfresco Software Limited. * * This file is part of Alfresco * @@ -23,7 +23,7 @@ import org.apache.commons.logging.LogFactory; /** - * A stand in for the org.apache.log4j.NDC class that avoids introducing runtime dependencies against the otherwise + * A stand in for the org.apache.logging.log4j.ThreadContext class that avoids introducing runtime dependencies against the otherwise * optional log4j. * * @author dward @@ -32,7 +32,7 @@ public class NDC { private static Log logger = LogFactory.getLog(NDC.class); - /** Log4J delegate for NDC */ + /** Log4J2 delegate for NDC */ private static NDCDelegate ndcDelegate; static diff --git a/core/src/main/java/org/alfresco/util/log/log4j/Log4JNDC.java b/core/src/main/java/org/alfresco/util/log/log4j/Log4JNDC.java index 49f599f054..d866346c23 100644 --- a/core/src/main/java/org/alfresco/util/log/log4j/Log4JNDC.java +++ b/core/src/main/java/org/alfresco/util/log/log4j/Log4JNDC.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005-2010 Alfresco Software Limited. + * Copyright (C) 2005-2022 Alfresco Software Limited. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -25,19 +25,19 @@ package org.alfresco.util.log.log4j; import org.alfresco.util.log.NDCDelegate; -import org.apache.log4j.NDC; +import org.apache.logging.log4j.ThreadContext; /** - * A stand in for the org.apache.log4j.NDC class that avoids introducing runtime dependencies against the otherwise + * A stand in for the org.apache.logging.log4j.ThreadContext class that avoids introducing runtime dependencies against the otherwise * optional log4j. * * @author dward */ public class Log4JNDC implements NDCDelegate { - // Force resolution of the log4j NDC class by the classloader (thus forcing an error if unavailable) + // Force resolution of the log4j2 ThreadContext class by the classloader (thus forcing an error if unavailable) @SuppressWarnings("unused") - private static final Class NDC_REF = NDC.class; + private static final Class NDC_REF = ThreadContext.class; /** * Push new diagnostic context information for the current thread. @@ -47,7 +47,7 @@ public class Log4JNDC implements NDCDelegate */ public void push(String message) { - NDC.push(message); + ThreadContext.push(message); } /** @@ -55,6 +55,6 @@ public class Log4JNDC implements NDCDelegate */ public void remove() { - NDC.remove(); + ThreadContext.clearAll(); } } diff --git a/packaging/docker-alfresco/Dockerfile b/packaging/docker-alfresco/Dockerfile index e780ffb237..8df267eff5 100644 --- a/packaging/docker-alfresco/Dockerfile +++ b/packaging/docker-alfresco/Dockerfile @@ -42,10 +42,6 @@ RUN sed -i "s/shared.loader=/shared.loader=\${catalina.base}\/shared\/classes/" RUN mkdir -p ${TOMCAT_DIR}/amps -#RUN echo -e '\n\ -#log4j.logger.org.alfresco.repo.content.transform.TransformerDebug=debug\n\ -#' >> ${TOMCAT_DIR}/shared/classes/alfresco/extension/custom-log4j.propertiesRUN mkdir -p ${TOMCAT_DIR}/amps - # Copy the amps from build context to the appropriate location for your application server COPY ${resource_path}/amps ${TOMCAT_DIR}/amps @@ -55,13 +51,14 @@ RUN java -jar ${TOMCAT_DIR}/alfresco-mmt/alfresco-mmt*.jar install \ ${TOMCAT_DIR}/webapps/alfresco -directory -nobackup # Move the log file -RUN sed -i -e "s_log4j.appender.File.File\=alfresco.log_log4j.appender.File.File\=${TOMCAT_DIR}/logs\/alfresco.log_" \ - ${TOMCAT_DIR}/webapps/alfresco/WEB-INF/classes/log4j.properties && \ - +RUN sed -i -e "s_appender.rolling.fileName\=alfresco.log_appender.rolling.fileName\=${TOMCAT_DIR}/logs\/alfresco.log_" \ + ${TOMCAT_DIR}/webapps/alfresco/WEB-INF/classes/log4j2.properties && \ + sed -i -e "s_appender.rolling.filePattern=alfresco.log.%d{yyyy-MM-dd}_appender.rolling.filePattern\=${TOMCAT_DIR}/logs\/alfresco.log.%d{yyyy-MM-dd}_" \ + ${TOMCAT_DIR}/webapps/alfresco/WEB-INF/classes/log4j2.properties && \ # Add catalina.policy to ROOT.war and alfresco.war # Grant all security permissions to alfresco webapp because of numerous permissions required in order to work properly. # Grant only deployXmlPermission to ROOT webapp. - sed -i -e "\$a\grant\ codeBase\ \"file:\$\{catalina.base\}\/webapps\/alfresco\/-\" \{\n\ permission\ java.security.AllPermission\;\n\};\ngrant\ codeBase\ \"file:\$\{catalina.base\}\/webapps\/ROOT\/-\" \{\n\ permission org.apache.catalina.security.DeployXmlPermission \"ROOT\";\n\};" ${TOMCAT_DIR}/conf/catalina.policy + sed -i -e "\$a\grant\ codeBase\ \"file:\$\{catalina.base\}\/webapps\/alfresco\/-\" \{\n\ permission\ java.security.AllPermission\;\n\};\ngrant\ codeBase\ \"file:\$\{catalina.base\}\/webapps\/_vti_bin\/-\" \{\n\ permission\ java.security.AllPermission\;\n\};\ngrant\ codeBase\ \"file:\$\{catalina.base\}\/webapps\/ROOT\/-\" \{\n\ permission org.apache.catalina.security.DeployXmlPermission \"ROOT\";\n\};" ${TOMCAT_DIR}/conf/catalina.policy # fontconfig is required by Activiti worflow diagram generator # installing pinned dependencies as well diff --git a/packaging/docker-alfresco/pom.xml b/packaging/docker-alfresco/pom.xml index aaa1b278d3..6784bbcee3 100644 --- a/packaging/docker-alfresco/pom.xml +++ b/packaging/docker-alfresco/pom.xml @@ -78,7 +78,6 @@ - copy-amps process-resources diff --git a/packaging/war/pom.xml b/packaging/war/pom.xml index 9432e1a956..1fb9c40efe 100644 --- a/packaging/war/pom.xml +++ b/packaging/war/pom.xml @@ -52,10 +52,6 @@ avalon-framework-impl 4.3.1 - - org.alfresco - alfresco-log-sanitizer - org.glassfish.jaxb diff --git a/packaging/war/src/main/resources/log4j.properties b/packaging/war/src/main/resources/log4j.properties deleted file mode 100644 index d2395ab8e8..0000000000 --- a/packaging/war/src/main/resources/log4j.properties +++ /dev/null @@ -1,270 +0,0 @@ -# Set root logger level to error -log4j.rootLogger=error, Console, File - -###### Console appender definition ####### - -# All outputs currently set to be a ConsoleAppender. -log4j.appender.Console=org.apache.log4j.ConsoleAppender -log4j.appender.Console.layout=org.alfresco.util.log.log4j.SanitizingPatternLayout - -# use log4j NDC to replace %x with tenant domain / username -log4j.appender.Console.layout.ConversionPattern=%d{ISO8601} %x %-5p [%c{3}] [%t] %m%n -#log4j.appender.Console.layout.ConversionPattern=%d{ABSOLUTE} %-5p [%c] %m%n - -###### File appender definition ####### -log4j.appender.File=org.apache.log4j.DailyRollingFileAppender -log4j.appender.File.File=alfresco.log -log4j.appender.File.Append=true -log4j.appender.File.DatePattern='.'yyyy-MM-dd -log4j.appender.File.layout=org.alfresco.util.log.log4j.SanitizingPatternLayout -log4j.appender.File.layout.ConversionPattern=%d{yyyy-MM-dd} %d{ABSOLUTE} %-5p [%c] [%t] %m%n - -###### Hibernate specific appender definition ####### -#log4j.appender.file=org.apache.log4j.FileAppender -#log4j.appender.file.File=hibernate.log -#log4j.appender.file.layout=org.alfresco.util.log.log4j.SanitizingPatternLayout -#log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n - -###### Log level overrides ####### - -# Commented-in loggers will be exposed as JMX MBeans (refer to org.alfresco.repo.admin.Log4JHierarchyInit) -# Hence, generally useful loggers should be listed with at least ERROR level to allow simple runtime -# control of the level via a suitable JMX Console. Also, any other loggers can be added transiently via -# Log4j addLoggerMBean as long as the logger exists and has been loaded. - -# Hibernate -log4j.logger.org.hibernate=error -log4j.logger.org.hibernate.util.JDBCExceptionReporter=fatal -log4j.logger.org.hibernate.event.def.AbstractFlushingEventListener=fatal -log4j.logger.org.hibernate.type=warn -log4j.logger.org.hibernate.cfg.SettingsFactory=warn - -# Spring -log4j.logger.org.springframework=warn -# Turn off Spring remoting warnings that should really be info or debug. -log4j.logger.org.springframework.remoting.support=error -log4j.logger.org.springframework.util=error - -# Axis/WSS4J -log4j.logger.org.apache.axis=info -log4j.logger.org.apache.ws=info - -# CXF -log4j.logger.org.apache.cxf=error - -# MyFaces -log4j.logger.org.apache.myfaces.util.DebugUtils=info -log4j.logger.org.apache.myfaces.el.VariableResolverImpl=error -log4j.logger.org.apache.myfaces.application.jsp.JspViewHandlerImpl=error -log4j.logger.org.apache.myfaces.taglib=error - -# log prepared statement cache activity ### -log4j.logger.org.hibernate.ps.PreparedStatementCache=info - -# Alfresco -log4j.logger.org.alfresco=error -log4j.logger.org.alfresco.repo.admin=info -log4j.logger.org.alfresco.repo.transaction=warn -log4j.logger.org.alfresco.repo.cache.TransactionalCache=warn -log4j.logger.org.alfresco.repo.model.filefolder=warn -log4j.logger.org.alfresco.repo.tenant=info -log4j.logger.org.alfresco.config=warn -log4j.logger.org.alfresco.config.JndiObjectFactoryBean=warn -log4j.logger.org.alfresco.config.JBossEnabledWebApplicationContext=warn -log4j.logger.org.alfresco.repo.management.subsystems=warn -log4j.logger.org.alfresco.repo.management.subsystems.ChildApplicationContextFactory=info -log4j.logger.org.alfresco.repo.management.subsystems.ChildApplicationContextFactory$ChildApplicationContext=warn -log4j.logger.org.alfresco.repo.security.sync=info -log4j.logger.org.alfresco.repo.security.person=info - -log4j.logger.org.alfresco.sample=info -log4j.logger.org.alfresco.web=info -#log4j.logger.org.alfresco.web.app.AlfrescoNavigationHandler=debug -#log4j.logger.org.alfresco.web.ui.repo.component.UIActions=debug -#log4j.logger.org.alfresco.web.ui.repo.tag.PageTag=debug -#log4j.logger.org.alfresco.web.bean.clipboard=debug -log4j.logger.org.alfresco.service.descriptor.DescriptorService=info -#log4j.logger.org.alfresco.web.page=debug - -log4j.logger.org.alfresco.repo.importer.ImporterBootstrap=error -#log4j.logger.org.alfresco.repo.importer.ImporterBootstrap=info - -log4j.logger.org.alfresco.repo.admin.patch.PatchExecuter=info -log4j.logger.org.alfresco.repo.domain.patch.ibatis.PatchDAOImpl=info - -# Specific patches -log4j.logger.org.alfresco.repo.admin.patch.impl.DeploymentMigrationPatch=info -log4j.logger.org.alfresco.repo.version.VersionMigrator=info - -log4j.logger.org.alfresco.repo.module.ModuleServiceImpl=info -log4j.logger.org.alfresco.repo.domain.schema.SchemaBootstrap=info -log4j.logger.org.alfresco.repo.admin.ConfigurationChecker=info -log4j.logger.org.alfresco.repo.node.index.AbstractReindexComponent=warn -log4j.logger.org.alfresco.repo.node.index.IndexTransactionTracker=warn -log4j.logger.org.alfresco.repo.node.index.FullIndexRecoveryComponent=info -#log4j.logger.org.alfresco.repo.node.db.hibernate.HibernateNodeDaoServiceImpl=warn -log4j.logger.org.alfresco.repo.domain.hibernate.DirtySessionMethodInterceptor=warn -log4j.logger.org.alfresco.repo.transaction.RetryingTransactionHelper=warn -log4j.logger.org.alfresco.util.transaction.SpringAwareUserTransaction.trace=warn -log4j.logger.org.alfresco.util.AbstractTriggerBean=warn -log4j.logger.org.alfresco.enterprise.repo.cluster=info -log4j.logger.org.alfresco.repo.version.Version2ServiceImpl=warn - -#log4j.logger.org.alfresco.web.app.DebugPhaseListener=debug -log4j.logger.org.alfresco.repo.node.db.NodeStringLengthWorker=info - -log4j.logger.org.alfresco.repo.workflow=info - -# FTP server debugging -log4j.logger.org.alfresco.ftp.protocol=error -#log4j.logger.org.alfresco.ftp.server=debug - -# WebDAV debugging -#log4j.logger.org.alfresco.webdav.protocol=debug -log4j.logger.org.alfresco.webdav.protocol=info - -# Kerberos servlet filters -#log4j.logger.org.alfresco.web.app.servlet.KerberosAuthenticationFilter=debug -#log4j.logger.org.alfresco.repo.webdav.auth.KerberosAuthenticationFilter=debug - -# File servers -log4j.logger.org.alfresco.fileserver=warn - -# Repo filesystem debug logging -#log4j.logger.org.alfresco.filesys.repo.ContentDiskDriver=debug - -# Integrity message threshold - if 'failOnViolation' is off, then WARNINGS are generated -log4j.logger.org.alfresco.repo.node.integrity=ERROR - -# Authentication -log4j.logger.org.alfresco.filesys.auth.ftp=warn -log4j.logger.org.alfresco.ftp.protocol.auth=warn -log4j.logger.org.alfresco.repo.webdav.auth=warn -log4j.logger.org.alfresco.repo.web.auth=warn -log4j.logger.org.alfresco.web.app.servlet=warn -# Used also for brute force attack detection -log4j.logger.org.alfresco.repo.security.authentication=warn - -# Indexer debugging -log4j.logger.org.alfresco.repo.search.Indexer=error -#log4j.logger.org.alfresco.repo.search.Indexer=debug - -log4j.logger.org.alfresco.repo.search.impl.lucene.index=error -log4j.logger.org.alfresco.repo.search.impl.lucene.fts.FullTextSearchIndexerImpl=warn -#log4j.logger.org.alfresco.repo.search.impl.lucene.index=DEBUG - -# Audit debugging -# log4j.logger.org.alfresco.repo.audit=DEBUG -# log4j.logger.org.alfresco.repo.audit.model=DEBUG - -# Property sheet and modelling debugging -# change to error to hide the warnings about missing properties and associations -log4j.logger.alfresco.missingProperties=warn - -# Dictionary/Model debugging -log4j.logger.org.alfresco.repo.dictionary=warn -log4j.logger.org.alfresco.repo.dictionary.types.period=warn - -# Virtualization Server Registry -log4j.logger.org.alfresco.mbeans.VirtServerRegistry=error - -# Spring context runtime property setter -log4j.logger.org.alfresco.util.RuntimeSystemPropertiesSetter=info - -# Debugging options for clustering -log4j.logger.org.alfresco.repo.content.ReplicatingContentStore=error -log4j.logger.org.alfresco.repo.content.replication=error - -#log4j.logger.org.alfresco.repo.deploy.DeploymentServiceImpl=debug - -# Activity service -log4j.logger.org.alfresco.repo.activities=warn - -# User usage tracking -log4j.logger.org.alfresco.repo.usage=info - -# Sharepoint -log4j.logger.org.alfresco.module.vti=info - -# Forms Engine -log4j.logger.org.alfresco.web.config.forms=info -log4j.logger.org.alfresco.web.scripts.forms=info - -# CMIS -log4j.logger.org.alfresco.opencmis=error -log4j.logger.org.alfresco.opencmis.AlfrescoCmisServiceInterceptor=error -log4j.logger.org.alfresco.cmis=error -log4j.logger.org.alfresco.cmis.dictionary=warn -log4j.logger.org.apache.chemistry.opencmis=info -log4j.logger.org.apache.chemistry.opencmis.server.impl.browser.CmisBrowserBindingServlet=OFF -log4j.logger.org.apache.chemistry.opencmis.server.impl.atompub.CmisAtomPubServlet=OFF - -# IMAP -log4j.logger.org.alfresco.repo.imap=info - -# JBPM -# Note: non-fatal errors (eg. logged during job execution) should be handled by Alfresco's retrying transaction handler -log4j.logger.org.jbpm.graph.def.GraphElement=fatal - -#log4j.logger.org.alfresco.repo.googledocs=debug - -###### Scripting ####### - -# Web Framework -log4j.logger.org.springframework.extensions.webscripts=info -log4j.logger.org.springframework.extensions.webscripts.ScriptLogger=warn -log4j.logger.org.springframework.extensions.webscripts.ScriptDebugger=off - -# Repository -log4j.logger.org.alfresco.repo.web.scripts=warn -log4j.logger.org.alfresco.repo.web.scripts.BaseWebScriptTest=info -log4j.logger.org.alfresco.repo.web.scripts.AlfrescoRhinoScriptDebugger=off -log4j.logger.org.alfresco.repo.jscript=error -log4j.logger.org.alfresco.repo.jscript.ScriptLogger=warn -log4j.logger.org.alfresco.repo.cmis.rest.CMISTest=info - -log4j.logger.org.alfresco.repo.domain.schema.script.ScriptBundleExecutorImpl=off -log4j.logger.org.alfresco.repo.domain.schema.script.ScriptExecutorImpl=info -log4j.logger.org.alfresco.repo.domain.schema.script.DeleteNotExistsExecutor=off - -log4j.logger.org.alfresco.repo.search.impl.solr.facet.SolrFacetServiceImpl=info - -# Bulk Filesystem Import Tool -log4j.logger.org.alfresco.repo.bulkimport=warn - -# Freemarker -# Note the freemarker.runtime logger is used to log non-fatal errors that are handled by Alfresco's retrying transaction handler -log4j.logger.freemarker.runtime= - -# Metadata extraction -log4j.logger.org.alfresco.repo.content.metadata.AbstractMappingMetadataExtracter=warn - -# no index support -log4j.logger.org.alfresco.repo.search.impl.noindex.NoIndexIndexer=fatal -log4j.logger.org.alfresco.repo.search.impl.noindex.NoIndexSearchService=fatal - -# lucene index warnings -log4j.logger.org.alfresco.repo.search.impl.lucene.index.IndexInfo=warn - -# Warn about RMI socket bind retries. -log4j.logger.org.alfresco.util.remote.server.socket.HostConfigurableSocketFactory=warn - -log4j.logger.org.alfresco.repo.usage.RepoUsageMonitor=info - -# Authorization -log4j.logger.org.alfresco.enterprise.repo.authorization.AuthorizationService=info -log4j.logger.org.alfresco.enterprise.repo.authorization.AuthorizationsConsistencyMonitor=warn - -# HeartBeat -log4j.logger.org.alfresco.heartbeat=info - -# Transformations -#log4j.logger.org.alfresco.repo.content.transform.TransformerDebug=debug - -log4j.logger.org.alfresco.repo.content.transform=info - -# Repository probes -log4j.logger.org.alfresco.rest.api.probes.ProbeEntityResource=info - -# ActiveMQ -log4j.logger.org.apache.activemq.transport.failover=warn diff --git a/packaging/war/src/main/resources/log4j2.properties b/packaging/war/src/main/resources/log4j2.properties new file mode 100644 index 0000000000..bc37e2bd7c --- /dev/null +++ b/packaging/war/src/main/resources/log4j2.properties @@ -0,0 +1,633 @@ +# Set root logger level to error +rootLogger.level=error +rootLogger.appenderRef.stdout.ref=ConsoleAppender +rootLogger.appenderRef.rolling.ref=RollingAppender + +###### Console appender definition ####### +# All outputs currently set to be a ConsoleAppender. +appender.console.type=Console +appender.console.name=ConsoleAppender +appender.console.layout.type=PatternLayout +# use log4j NDC to replace %x with tenant domain / username +appender.console.layout.pattern=%d{ISO8601} %x %-5p [%c{3}] [%t] %replace{%m}{[\r\n]+}{}%n + +###### File appender definition ####### +appender.rolling.type=RollingFile +appender.rolling.name=RollingAppender +appender.rolling.fileName=alfresco.log +appender.rolling.filePattern=alfresco.log.%d{yyyy-MM-dd} +appender.rolling.layout.type=PatternLayout +appender.rolling.layout.pattern=%d{yyyy-MM-dd} %d{ABSOLUTE} %-5p [%c] [%t] %replace{%m}{[\r\n]+}{}%n +appender.rolling.policies.type = Policies +appender.rolling.policies.time.type = TimeBasedTriggeringPolicy +appender.rolling.policies.time.interval = 1 + +###### Log level overrides ####### +# Commented-in loggers will be exposed as JMX MBeans (refer to org.alfresco.repo.admin.Log4JHierarchyInit) +# Hence, generally useful loggers should be listed with at least ERROR level to allow simple runtime +# control of the level via a suitable JMX Console. Also, any other loggers can be added transiently via +# Log4j addLoggerMBean as long as the logger exists and has been loaded. + +# Hibernate + +logger.hibernate.name=org.hibernate +logger.hibernate.level=error + +logger.hibernate-util-JDBCExceptionReporter.name=org.hibernate.util.JDBCExceptionReporter +logger.hibernate-util-JDBCExceptionReporter.level=fatal + +logger.hibernate-event-def-AbstractFlushingEventListener.name=org.hibernate.event.def.AbstractFlushingEventListener +logger.hibernate-event-def-AbstractFlushingEventListener.level=fatal + +logger.hibernate-type.name=org.hibernate.type +logger.hibernate-type.level=warn + +logger.hibernate-cfg-SettingsFactory.name=org.hibernate.cfg.SettingsFactory +logger.hibernate-cfg-SettingsFactory.level=warn + + + +# Spring + +logger.springframework.name=org.springframework +logger.springframework.level=warn + +# Turn off Spring remoting warnings that should really be info or debug. + +logger.springframework-remoting-support.name=org.springframework.remoting.support +logger.springframework-remoting-support.level=error + +logger.springframework-util.name=org.springframework.util +logger.springframework-util.level=error + + + +# Axis/WSS4J + +logger.apache-axis.name=org.apache.axis +logger.apache-axis.level=info + +logger.apache-ws.name=org.apache.ws +logger.apache-ws.level=info + + + +# CXF + +logger.apache-cxf.name=org.apache.cxf +logger.apache-cxf.level=error + + + +# MyFaces + +logger.apache-myfaces-util-DebugUtils.name=org.apache.myfaces.util.DebugUtils +logger.apache-myfaces-util-DebugUtils.level=info + +logger.apache-myfaces-el-VariableResolverImpl.name=org.apache.myfaces.el.VariableResolverImpl +logger.apache-myfaces-el-VariableResolverImpl.level=error + +logger.apache-myfaces-application-jsp-JspViewHandlerImpl.name=org.apache.myfaces.application.jsp.JspViewHandlerImpl +logger.apache-myfaces-application-jsp-JspViewHandlerImpl.level=error + +logger.apache-myfaces-taglib.name=org.apache.myfaces.taglib +logger.apache-myfaces-taglib.level=error + + + +# log prepared statement cache activity ### + +logger.hibernate-ps-PreparedStatementCache.name=org.hibernate.ps.PreparedStatementCache +logger.hibernate-ps-PreparedStatementCache.level=info + + + +# Alfresco + +logger.alfresco.name=org.alfresco +logger.alfresco.level=error + +logger.alfresco-repo-admin.name=org.alfresco.repo.admin +logger.alfresco-repo-admin.level=info + +logger.alfresco-repo-transaction.name=org.alfresco.repo.transaction +logger.alfresco-repo-transaction.level=warn + +logger.alfresco-repo-cache-TransactionalCache.name=org.alfresco.repo.cache.TransactionalCache +logger.alfresco-repo-cache-TransactionalCache.level=warn + +logger.alfresco-repo-model-filefolder.name=org.alfresco.repo.model.filefolder +logger.alfresco-repo-model-filefolder.level=warn + +logger.alfresco-repo-tenant.name=org.alfresco.repo.tenant +logger.alfresco-repo-tenant.level=info + +logger.alfresco-config.name=org.alfresco.config +logger.alfresco-config.level=warn + +logger.alfresco-config-JndiObjectFactoryBean.name=org.alfresco.config.JndiObjectFactoryBean +logger.alfresco-config-JndiObjectFactoryBean.level=warn + +logger.alfresco-config-JBossEnabledWebApplicationContext.name=org.alfresco.config.JBossEnabledWebApplicationContext +logger.alfresco-config-JBossEnabledWebApplicationContext.level=warn + +logger.alfresco-repo-management-subsystems.name=org.alfresco.repo.management.subsystems +logger.alfresco-repo-management-subsystems.level=warn + +logger.alfresco-repo-management-subsystems-ChildApplicationContextFactory.name=org.alfresco.repo.management.subsystems.ChildApplicationContextFactory +logger.alfresco-repo-management-subsystems-ChildApplicationContextFactory.level=info + +logger.alfresco-repo-management-subsystems-ChildApplicationContextFactory$ChildApplicationContext.name=org.alfresco.repo.management.subsystems.ChildApplicationContextFactory$ChildApplicationContext +logger.alfresco-repo-management-subsystems-ChildApplicationContextFactory$ChildApplicationContext.level=warn + +logger.alfresco-repo-security-sync.name=org.alfresco.repo.security.sync +logger.alfresco-repo-security-sync.level=info + +logger.alfresco-repo-security-person.name=org.alfresco.repo.security.person +logger.alfresco-repo-security-person.level=info + + + +logger.alfresco-sample.name=org.alfresco.sample +logger.alfresco-sample.level=info + +logger.alfresco-web.name=org.alfresco.web +logger.alfresco-web.level=info + +#logger.alfresco-web-app-AlfrescoNavigationHandler.name=org.alfresco.web.app.AlfrescoNavigationHandler +#logger.alfresco-web-app-AlfrescoNavigationHandler.level=debug + +#logger.alfresco-web-ui-repo-component-UIActions.name=org.alfresco.web.ui.repo.component.UIActions +#logger.alfresco-web-ui-repo-component-UIActions.level=debug + +#logger.alfresco-web-ui-repo-tag-PageTag.name=org.alfresco.web.ui.repo.tag.PageTag +#logger.alfresco-web-ui-repo-tag-PageTag.level=debug + +#logger.alfresco-web-bean-clipboard.name=org.alfresco.web.bean.clipboard +#logger.alfresco-web-bean-clipboard.level=debug + +logger.alfresco-service-descriptor-DescriptorService.name=org.alfresco.service.descriptor.DescriptorService +logger.alfresco-service-descriptor-DescriptorService.level=info + +#logger.alfresco-web-page.name=org.alfresco.web.page +#logger.alfresco-web-page.level=debug + + + +logger.alfresco-repo-importer-ImporterBootstrap.name=org.alfresco.repo.importer.ImporterBootstrap +logger.alfresco-repo-importer-ImporterBootstrap.level=error + +#logger.alfresco-repo-importer-ImporterBootstrap.name=org.alfresco.repo.importer.ImporterBootstrap +#logger.alfresco-repo-importer-ImporterBootstrap.level=info + + + +logger.alfresco-repo-admin-patch-PatchExecuter.name=org.alfresco.repo.admin.patch.PatchExecuter +logger.alfresco-repo-admin-patch-PatchExecuter.level=info + +logger.alfresco-repo-domain-patch-ibatis-PatchDAOImpl.name=org.alfresco.repo.domain.patch.ibatis.PatchDAOImpl +logger.alfresco-repo-domain-patch-ibatis-PatchDAOImpl.level=info + + + +# Specific patches + +logger.alfresco-repo-admin-patch-impl-DeploymentMigrationPatch.name=org.alfresco.repo.admin.patch.impl.DeploymentMigrationPatch +logger.alfresco-repo-admin-patch-impl-DeploymentMigrationPatch.level=info + +logger.alfresco-repo-version-VersionMigrator.name=org.alfresco.repo.version.VersionMigrator +logger.alfresco-repo-version-VersionMigrator.level=info + + + +logger.alfresco-repo-module-ModuleServiceImpl.name=org.alfresco.repo.module.ModuleServiceImpl +logger.alfresco-repo-module-ModuleServiceImpl.level=info + +logger.alfresco-repo-domain-schema-SchemaBootstrap.name=org.alfresco.repo.domain.schema.SchemaBootstrap +logger.alfresco-repo-domain-schema-SchemaBootstrap.level=info + +logger.alfresco-repo-admin-ConfigurationChecker.name=org.alfresco.repo.admin.ConfigurationChecker +logger.alfresco-repo-admin-ConfigurationChecker.level=info + +logger.alfresco-repo-node-index-AbstractReindexComponent.name=org.alfresco.repo.node.index.AbstractReindexComponent +logger.alfresco-repo-node-index-AbstractReindexComponent.level=warn + +logger.alfresco-repo-node-index-IndexTransactionTracker.name=org.alfresco.repo.node.index.IndexTransactionTracker +logger.alfresco-repo-node-index-IndexTransactionTracker.level=warn + +logger.alfresco-repo-node-index-FullIndexRecoveryComponent.name=org.alfresco.repo.node.index.FullIndexRecoveryComponent +logger.alfresco-repo-node-index-FullIndexRecoveryComponent.level=info + +#logger.alfresco-repo-node-db-hibernate-HibernateNodeDaoServiceImpl.name=org.alfresco.repo.node.db.hibernate.HibernateNodeDaoServiceImpl +#logger.alfresco-repo-node-db-hibernate-HibernateNodeDaoServiceImpl.level=warn + +logger.alfresco-repo-domain-hibernate-DirtySessionMethodInterceptor.name=org.alfresco.repo.domain.hibernate.DirtySessionMethodInterceptor +logger.alfresco-repo-domain-hibernate-DirtySessionMethodInterceptor.level=warn + +logger.alfresco-repo-transaction-RetryingTransactionHelper.name=org.alfresco.repo.transaction.RetryingTransactionHelper +logger.alfresco-repo-transaction-RetryingTransactionHelper.level=warn + +logger.alfresco-util-transaction-SpringAwareUserTransaction-trace.name=org.alfresco.util.transaction.SpringAwareUserTransaction.trace +logger.alfresco-util-transaction-SpringAwareUserTransaction-trace.level=warn + +logger.alfresco-util-AbstractTriggerBean.name=org.alfresco.util.AbstractTriggerBean +logger.alfresco-util-AbstractTriggerBean.level=warn + +logger.alfresco-enterprise-repo-cluster.name=org.alfresco.enterprise.repo.cluster +logger.alfresco-enterprise-repo-cluster.level=info + +logger.alfresco-repo-version-Version2ServiceImpl.name=org.alfresco.repo.version.Version2ServiceImpl +logger.alfresco-repo-version-Version2ServiceImpl.level=warn + + + +#logger.alfresco-web-app-DebugPhaseListener.name=org.alfresco.web.app.DebugPhaseListener +#logger.alfresco-web-app-DebugPhaseListener.level=debug + +logger.alfresco-repo-node-db-NodeStringLengthWorker.name=org.alfresco.repo.node.db.NodeStringLengthWorker +logger.alfresco-repo-node-db-NodeStringLengthWorker.level=info + + + +logger.alfresco-repo-workflow.name=org.alfresco.repo.workflow +logger.alfresco-repo-workflow.level=info + + + +# FTP server debugging + +logger.alfresco-ftp-protocol.name=org.alfresco.ftp.protocol +logger.alfresco-ftp-protocol.level=error + +#logger.alfresco-ftp-server.name=org.alfresco.ftp.server +#logger.alfresco-ftp-server.level=debug + + + +# WebDAV debugging + +#logger.alfresco-webdav-protocol.name=org.alfresco.webdav.protocol +#logger.alfresco-webdav-protocol.level=debug + +logger.alfresco-webdav-protocol.name=org.alfresco.webdav.protocol +logger.alfresco-webdav-protocol.level=info + + + +# Kerberos servlet filters + +#logger.alfresco-web-app-servlet-KerberosAuthenticationFilter.name=org.alfresco.web.app.servlet.KerberosAuthenticationFilter +#logger.alfresco-web-app-servlet-KerberosAuthenticationFilter.level=debug + +#logger.alfresco-repo-webdav-auth-KerberosAuthenticationFilter.name=org.alfresco.repo.webdav.auth.KerberosAuthenticationFilter +#logger.alfresco-repo-webdav-auth-KerberosAuthenticationFilter.level=debug + + + +# File servers + +logger.alfresco-fileserver.name=org.alfresco.fileserver +logger.alfresco-fileserver.level=warn + + + +# Repo filesystem debug logging + +#logger.alfresco-filesys-repo-ContentDiskDriver.name=org.alfresco.filesys.repo.ContentDiskDriver +#logger.alfresco-filesys-repo-ContentDiskDriver.level=debug + + + +# Integrity message threshold - if 'failOnViolation' is off, then WARNINGS are generated + +logger.alfresco-repo-node-integrity.name=org.alfresco.repo.node.integrity +logger.alfresco-repo-node-integrity.level=error + + + +# Authentication + +logger.alfresco-filesys-auth-ftp.name=org.alfresco.filesys.auth.ftp +logger.alfresco-filesys-auth-ftp.level=warn + +logger.alfresco-ftp-protocol-auth.name=org.alfresco.ftp.protocol.auth +logger.alfresco-ftp-protocol-auth.level=warn + +logger.alfresco-repo-webdav-auth.name=org.alfresco.repo.webdav.auth +logger.alfresco-repo-webdav-auth.level=warn + +logger.alfresco-repo-web-auth.name=org.alfresco.repo.web.auth +logger.alfresco-repo-web-auth.level=warn + +logger.alfresco-web-app-servlet.name=org.alfresco.web.app.servlet +logger.alfresco-web-app-servlet.level=warn + +# Used also for brute force attack detection + +logger.alfresco-repo-security-authentication.name=org.alfresco.repo.security.authentication +logger.alfresco-repo-security-authentication.level=warn + + + +# Indexer debugging + +logger.alfresco-repo-search-Indexer.name=org.alfresco.repo.search.Indexer +logger.alfresco-repo-search-Indexer.level=error + +#logger.alfresco-repo-search-Indexer.name=org.alfresco.repo.search.Indexer +#logger.alfresco-repo-search-Indexer.level=debug + + + +logger.alfresco-repo-search-impl-lucene-index.name=org.alfresco.repo.search.impl.lucene.index +logger.alfresco-repo-search-impl-lucene-index.level=error + +logger.alfresco-repo-search-impl-lucene-fts-FullTextSearchIndexerImpl.name=org.alfresco.repo.search.impl.lucene.fts.FullTextSearchIndexerImpl +logger.alfresco-repo-search-impl-lucene-fts-FullTextSearchIndexerImpl.level=warn + +#logger.alfresco-repo-search-impl-lucene-index.name=org.alfresco.repo.search.impl.lucene.index +#logger.alfresco-repo-search-impl-lucene-index.level=debug + + + +# Audit debugging + +#logger.alfresco-repo-audit.name=org.alfresco.repo.audit +#logger.alfresco-repo-audit.level=debug +#logger.alfresco-repo-audit-model.name=org.alfresco.repo.audit.model +#logger.alfresco-repo-audit-model.level=debug + + +# Property sheet and modelling debugging + +# change to error to hide the warnings about missing properties and associations + +logger.missingProperties.name=alfresco.missingProperties +logger.missingProperties.level=warn + + + +# Dictionary/Model debugging + +logger.alfresco-repo-dictionary.name=org.alfresco.repo.dictionary +logger.alfresco-repo-dictionary.level=warn + +logger.alfresco-repo-dictionary-types-period.name=org.alfresco.repo.dictionary.types.period +logger.alfresco-repo-dictionary-types-period.level=warn + + + +# Virtualization Server Registry + +logger.alfresco-mbeans-VirtServerRegistry.name=org.alfresco.mbeans.VirtServerRegistry +logger.alfresco-mbeans-VirtServerRegistry.level=error + + + +# Spring context runtime property setter + +logger.alfresco-util-RuntimeSystemPropertiesSetter.name=org.alfresco.util.RuntimeSystemPropertiesSetter +logger.alfresco-util-RuntimeSystemPropertiesSetter.level=info + + + +# Debugging options for clustering + +logger.alfresco-repo-content-ReplicatingContentStore.name=org.alfresco.repo.content.ReplicatingContentStore +logger.alfresco-repo-content-ReplicatingContentStore.level=error + +logger.alfresco-repo-content-replication.name=org.alfresco.repo.content.replication +logger.alfresco-repo-content-replication.level=error + + + +#logger.alfresco-repo-deploy-DeploymentServiceImpl.name=org.alfresco.repo.deploy.DeploymentServiceImpl +#logger.alfresco-repo-deploy-DeploymentServiceImpl.level=debug + + + +# Activity service + +logger.alfresco-repo-activities.name=org.alfresco.repo.activities +logger.alfresco-repo-activities.level=warn + + + +# User usage tracking + +logger.alfresco-repo-usage.name=org.alfresco.repo.usage +logger.alfresco-repo-usage.level=info + + + +# Sharepoint + +logger.alfresco-module-vti.name=org.alfresco.module.vti +logger.alfresco-module-vti.level=info + + + +# Forms Engine + +logger.alfresco-web-config-forms.name=org.alfresco.web.config.forms +logger.alfresco-web-config-forms.level=info + +logger.alfresco-web-scripts-forms.name=org.alfresco.web.scripts.forms +logger.alfresco-web-scripts-forms.level=info + + + +# CMIS + +logger.alfresco-opencmis.name=org.alfresco.opencmis +logger.alfresco-opencmis.level=error + +logger.alfresco-opencmis-AlfrescoCmisServiceInterceptor.name=org.alfresco.opencmis.AlfrescoCmisServiceInterceptor +logger.alfresco-opencmis-AlfrescoCmisServiceInterceptor.level=error + +logger.alfresco-cmis.name=org.alfresco.cmis +logger.alfresco-cmis.level=error + +logger.alfresco-cmis-dictionary.name=org.alfresco.cmis.dictionary +logger.alfresco-cmis-dictionary.level=warn + +logger.apache-chemistry-opencmis.name=org.apache.chemistry.opencmis +logger.apache-chemistry-opencmis.level=info + +logger.apache-chemistry-opencmis-server-impl-browser-CmisBrowserBindingServlet.name=org.apache.chemistry.opencmis.server.impl.browser.CmisBrowserBindingServlet +logger.apache-chemistry-opencmis-server-impl-browser-CmisBrowserBindingServlet.level=off + +logger.apache-chemistry-opencmis-server-impl-atompub-CmisAtomPubServlet.name=org.apache.chemistry.opencmis.server.impl.atompub.CmisAtomPubServlet +logger.apache-chemistry-opencmis-server-impl-atompub-CmisAtomPubServlet.level=off + + + +# IMAP + +logger.alfresco-repo-imap.name=org.alfresco.repo.imap +logger.alfresco-repo-imap.level=info + + + +# JBPM + +# Note: non-fatal errors (eg. logged during job execution) should be handled by Alfresco's retrying transaction handler + +logger.jbpm-graph-def-GraphElement.name=org.jbpm.graph.def.GraphElement +logger.jbpm-graph-def-GraphElement.level=fatal + + + +#logger.alfresco-repo-googledocs.name=org.alfresco.repo.googledocs +#logger.alfresco-repo-googledocs.level=debug + + + +###### Scripting ####### + + + +# Web Framework + +logger.springframework-extensions-webscripts.name=org.springframework.extensions.webscripts +logger.springframework-extensions-webscripts.level=info + +logger.springframework-extensions-webscripts-ScriptLogger.name=org.springframework.extensions.webscripts.ScriptLogger +logger.springframework-extensions-webscripts-ScriptLogger.level=warn + +logger.springframework-extensions-webscripts-ScriptDebugger.name=org.springframework.extensions.webscripts.ScriptDebugger +logger.springframework-extensions-webscripts-ScriptDebugger.level=off + + + +# Repository + +logger.alfresco-repo-web-scripts.name=org.alfresco.repo.web.scripts +logger.alfresco-repo-web-scripts.level=warn + +logger.alfresco-repo-web-scripts-BaseWebScriptTest.name=org.alfresco.repo.web.scripts.BaseWebScriptTest +logger.alfresco-repo-web-scripts-BaseWebScriptTest.level=info + +logger.alfresco-repo-web-scripts-AlfrescoRhinoScriptDebugger.name=org.alfresco.repo.web.scripts.AlfrescoRhinoScriptDebugger +logger.alfresco-repo-web-scripts-AlfrescoRhinoScriptDebugger.level=off + +logger.alfresco-repo-jscript.name=org.alfresco.repo.jscript +logger.alfresco-repo-jscript.level=error + +logger.alfresco-repo-jscript-ScriptLogger.name=org.alfresco.repo.jscript.ScriptLogger +logger.alfresco-repo-jscript-ScriptLogger.level=warn + +logger.alfresco-repo-cmis-rest-CMISTest.name=org.alfresco.repo.cmis.rest.CMISTest +logger.alfresco-repo-cmis-rest-CMISTest.level=info + + + +logger.alfresco-repo-domain-schema-script-ScriptBundleExecutorImpl.name=org.alfresco.repo.domain.schema.script.ScriptBundleExecutorImpl +logger.alfresco-repo-domain-schema-script-ScriptBundleExecutorImpl.level=off + +logger.alfresco-repo-domain-schema-script-ScriptExecutorImpl.name=org.alfresco.repo.domain.schema.script.ScriptExecutorImpl +logger.alfresco-repo-domain-schema-script-ScriptExecutorImpl.level=info + +logger.alfresco-repo-domain-schema-script-DeleteNotExistsExecutor.name=org.alfresco.repo.domain.schema.script.DeleteNotExistsExecutor +logger.alfresco-repo-domain-schema-script-DeleteNotExistsExecutor.level=off + + + +logger.alfresco-repo-search-impl-solr-facet-SolrFacetServiceImpl.name=org.alfresco.repo.search.impl.solr.facet.SolrFacetServiceImpl +logger.alfresco-repo-search-impl-solr-facet-SolrFacetServiceImpl.level=info + + + +# Bulk Filesystem Import Tool + +logger.alfresco-repo-bulkimport.name=org.alfresco.repo.bulkimport +logger.alfresco-repo-bulkimport.level=warn + + + +# Freemarker + +# Note the freemarker.runtime logger is used to log non-fatal errors that are handled by Alfresco's retrying transaction handler + +logger.runtime.name=freemarker.runtime +logger.runtime.level= + + + +# Metadata extraction + +logger.alfresco-repo-content-metadata-AbstractMappingMetadataExtracter.name=org.alfresco.repo.content.metadata.AbstractMappingMetadataExtracter +logger.alfresco-repo-content-metadata-AbstractMappingMetadataExtracter.level=warn + + + +# no index support + +logger.alfresco-repo-search-impl-noindex-NoIndexIndexer.name=org.alfresco.repo.search.impl.noindex.NoIndexIndexer +logger.alfresco-repo-search-impl-noindex-NoIndexIndexer.level=fatal + +logger.alfresco-repo-search-impl-noindex-NoIndexSearchService.name=org.alfresco.repo.search.impl.noindex.NoIndexSearchService +logger.alfresco-repo-search-impl-noindex-NoIndexSearchService.level=fatal + + + +# lucene index warnings + +logger.alfresco-repo-search-impl-lucene-index-IndexInfo.name=org.alfresco.repo.search.impl.lucene.index.IndexInfo +logger.alfresco-repo-search-impl-lucene-index-IndexInfo.level=warn + + + +# Warn about RMI socket bind retries. + +logger.alfresco-util-remote-server-socket-HostConfigurableSocketFactory.name=org.alfresco.util.remote.server.socket.HostConfigurableSocketFactory +logger.alfresco-util-remote-server-socket-HostConfigurableSocketFactory.level=warn + + + +logger.alfresco-repo-usage-RepoUsageMonitor.name=org.alfresco.repo.usage.RepoUsageMonitor +logger.alfresco-repo-usage-RepoUsageMonitor.level=info + + + +# Authorization + +logger.alfresco-enterprise-repo-authorization-AuthorizationService.name=org.alfresco.enterprise.repo.authorization.AuthorizationService +logger.alfresco-enterprise-repo-authorization-AuthorizationService.level=info + +logger.alfresco-enterprise-repo-authorization-AuthorizationsConsistencyMonitor.name=org.alfresco.enterprise.repo.authorization.AuthorizationsConsistencyMonitor +logger.alfresco-enterprise-repo-authorization-AuthorizationsConsistencyMonitor.level=warn + + + +# HeartBeat + +logger.alfresco-heartbeat.name=org.alfresco.heartbeat +logger.alfresco-heartbeat.level=info + + + +# Transformations + +#logger.alfresco-repo-content-transform-TransformerDebug.name=org.alfresco.repo.content.transform.TransformerDebug +#logger.alfresco-repo-content-transform-TransformerDebug.level=debug + + + +logger.alfresco-repo-content-transform.name=org.alfresco.repo.content.transform +logger.alfresco-repo-content-transform.level=info + + + +# Repository probes + +logger.alfresco-rest-api-probes-ProbeEntityResource.name=org.alfresco.rest.api.probes.ProbeEntityResource +logger.alfresco-rest-api-probes-ProbeEntityResource.level=info + + + +# ActiveMQ + +logger.apache-activemq-transport-failover.name=org.apache.activemq.transport.failover +logger.apache-activemq-transport-failover.level=warn + diff --git a/pom.xml b/pom.xml index 607588f36e..b535ca0601 100644 --- a/pom.xml +++ b/pom.xml @@ -48,7 +48,6 @@ 7.2 6.0.1 1.2.20 - 0.2 5.23.0 5.23.0 2.0.0 @@ -73,7 +72,8 @@ 4.4.15 3.1-HTTPCLIENT-1265 2.12.2 - 2.0.1 + 2.0.3 + 2.19.0 0.17 3.0.12 2.4.1 @@ -109,8 +109,8 @@ 2.7.0 1.1.4 - 3.3.1 - 1.5.0 + 3.3.1-DEV-LOG4J2 + 1.5.0-DEV-LOG4J2 7.3.0 2.2.0 @@ -567,17 +567,6 @@ commons-email 1.5 - - org.alfresco - alfresco-log-sanitizer - ${dependency.alfresco-log-sanitizer.version} - - - log4j - log4j - - - org.alfresco.aos-module alfresco-aos-module @@ -619,15 +608,9 @@ ${dependency.slf4j.version} - org.slf4j - slf4j-reload4j - ${dependency.slf4j.version} - - - ch.qos.reload4j - reload4j - - + org.apache.logging.log4j + log4j-slf4j2-impl + ${dependency.log4j.version} xerces diff --git a/remote-api/src/test/java/org/alfresco/repo/webdav/WebDAVMethodTest.java b/remote-api/src/test/java/org/alfresco/repo/webdav/WebDAVMethodTest.java index a7ee542d98..d044e11459 100644 --- a/remote-api/src/test/java/org/alfresco/repo/webdav/WebDAVMethodTest.java +++ b/remote-api/src/test/java/org/alfresco/repo/webdav/WebDAVMethodTest.java @@ -2,7 +2,7 @@ * #%L * Alfresco Remote API * %% - * Copyright (C) 2005 - 2020 Alfresco Software Limited + * Copyright (C) 2005 - 2022 Alfresco Software Limited * %% * This file is part of the Alfresco software. * If the software was purchased under a paid Alfresco license, the terms of @@ -49,8 +49,6 @@ import org.alfresco.service.transaction.TransactionService; import org.alfresco.util.ApplicationContextHelper; import org.alfresco.util.GUID; import org.alfresco.util.testing.category.IntermittentlyFailingTests; -import org.apache.log4j.Level; -import org.apache.log4j.Logger; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.junit.Test; @@ -58,6 +56,7 @@ import org.junit.experimental.categories.Category; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; +import org.slf4j.event.Level; import org.springframework.context.ApplicationContext; import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.mock.web.MockHttpServletResponse; diff --git a/repository/pom.xml b/repository/pom.xml index 2118f19a87..4439ad9b94 100644 --- a/repository/pom.xml +++ b/repository/pom.xml @@ -46,10 +46,6 @@ com.sun.mail javax.mail - - org.slf4j - slf4j-log4j12 - @@ -222,8 +218,9 @@ slf4j-api - org.slf4j - slf4j-reload4j + org.apache.logging.log4j + log4j-slf4j2-impl + ${dependency.log4j.version} xerces diff --git a/repository/src/main/java/org/alfresco/repo/admin/Log4JHierarchyInit.java b/repository/src/main/java/org/alfresco/repo/admin/Log4JHierarchyInit.java index 261f5ac346..81d809f4dc 100644 --- a/repository/src/main/java/org/alfresco/repo/admin/Log4JHierarchyInit.java +++ b/repository/src/main/java/org/alfresco/repo/admin/Log4JHierarchyInit.java @@ -2,37 +2,45 @@ * #%L * Alfresco Repository * %% - * Copyright (C) 2005 - 2016 Alfresco Software Limited + * Copyright (C) 2005 - 2022 Alfresco Software Limited * %% - * This file is part of the Alfresco software. - * If the software was purchased under a paid Alfresco license, the terms of - * the paid license agreement will prevail. Otherwise, the software is + * This file is part of the Alfresco software. + * If the software was purchased under a paid Alfresco license, the terms of + * the paid license agreement will prevail. Otherwise, the software is * provided under the following open source license terms: - * + * * Alfresco is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. - * + * * Alfresco is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. - * + * * You should have received a copy of the GNU Lesser General Public License * along with Alfresco. If not, see . * #L% */ package org.alfresco.repo.admin; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; import java.io.InputStream; -import java.lang.reflect.Method; import java.util.ArrayList; import java.util.List; import java.util.Properties; + import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.core.LoggerContext; +import org.apache.logging.log4j.core.config.properties.PropertiesConfiguration; +import org.apache.logging.log4j.core.config.properties.PropertiesConfigurationBuilder; import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; @@ -45,54 +53,51 @@ import org.springframework.core.io.support.ResourcePatternResolver; * The actual implementation uses introspection to avoid any hard-coded references to Log4J classes. If Log4J is * not present, this class will do nothing. *

- * Alfresco modules can provide their own log4j.properties file, which augments/overrides the global log4j.properties + * Alfresco modules can provide their own log4j2.properties file, which augments/overrides the global log4j2.properties * within the Alfresco webapp. Within the module's source tree, suppose you create: *

- *      config/alfresco/module/{module.id}/log4j.properties
+ *      config/alfresco/module/{module.id}/log4j2.properties
  * 
- * At deployment time, this log4j.properties file will be placed in: + * At deployment time, this log4j2.properties file will be placed in: *
- *      WEB-INF/classes/alfresco/module/{module.id}/log4j.properties
+ *      WEB-INF/classes/alfresco/module/{module.id}/log4j2.properties
  * 
* Where {module.id} is whatever value is set within the AMP's module.properties file. For details, see: Developing an Alfresco Module *

* For example, if {module.id} is "org.alfresco.module.someModule", then within your source code you'll have: - * + * *

- * config / alfresco / module / org.alfresco.module.someModule / log4j.properties
+ * config / alfresco / module / org.alfresco.module.someModule / log4j2.properties
  * 
- * + *

* This would be deployed to: *

- * WEB - INF / classes / alfresco / module / org.alfresco.module.someModule / log4j.properties
+ * WEB - INF / classes / alfresco / module / org.alfresco.module.someModule / log4j2.properties
  * 
*/ public class Log4JHierarchyInit implements ApplicationContextAware { - private static Log logger = LogFactory.getLog(Log4JHierarchyInit.class); - private List extraLog4jUrls; + private static final Log LOGGER = LogFactory.getLog(Log4JHierarchyInit.class); + private final List extraLog4jUrls; private ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(); public Log4JHierarchyInit() { - extraLog4jUrls = new ArrayList(); + extraLog4jUrls = new ArrayList<>(); } /** - * Loads a set of augmenting/overriding log4j.properties files from locations specified via an array of Srping URLS. + * Loads a set of augmenting/overriding log4j2.properties files from locations specified via an array of Spring URLS. *

* This function supports Spring's syntax for retrieving multiple class path resources with the same name, * via the "classpath*:" prefix. For details, see: {@link PathMatchingResourcePatternResolver}. */ public void setExtraLog4jUrls(List urls) { - for (String url : urls) - { - extraLog4jUrls.add(url); - } + extraLog4jUrls.addAll(urls); } - + public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { this.resolver = applicationContext; @@ -107,34 +112,50 @@ public class Log4JHierarchyInit implements ApplicationContextAware { try { - Properties mainProperties=new Properties(); - // Get the PropertyConfigurator - Class clazz = Class.forName("org.apache.log4j.PropertyConfigurator"); - Method method = clazz.getMethod("configure", Properties.class); - // Import using this method + Properties mainProperties = new Properties(); + + importMainLogSettings(mainProperties); for (String url : extraLog4jUrls) { importLogSettings(url, mainProperties); } - method.invoke(null, mainProperties); + + PropertiesConfiguration propertiesConfiguration = new PropertiesConfigurationBuilder() + .setConfigurationSource(null) + .setRootProperties(mainProperties) + .setLoggerContext((LoggerContext) LogManager.getContext(false)) + .build(); + + propertiesConfiguration.initialize(); + ((LoggerContext) LogManager.getContext(false)).reconfigure(propertiesConfiguration); } - catch (ClassNotFoundException e) + catch (Throwable t) { - // Log4J not present - return; - } - catch (NoSuchMethodException e) - { - throw new RuntimeException("Unable to find method 'configure' on class 'org.apache.log4j.PropertyConfigurator'"); - } - catch(Throwable t) - { - if (logger.isDebugEnabled()) + if (LOGGER.isDebugEnabled()) { - logger.debug("Failed to add extra Logger configuration: \n" + " Error: " + t.getMessage(), t); + LOGGER.debug("Failed to add extra Logger configuration: \n" + " Error: " + t.getMessage(), t); + } + } + + } + + private static void importMainLogSettings(Properties mainProperties) throws IOException + { + File file = ((LoggerContext) LogManager.getContext()).getConfiguration().getConfigurationSource().getFile(); + if (file != null) + { + try (FileInputStream fis = new FileInputStream(file)) + { + mainProperties.load(fis); + } + catch (FileNotFoundException e) + { + if (LOGGER.isDebugEnabled()) + { + LOGGER.debug("Failed to find initial configuration: \n" + " Error: " + e.getMessage(), e); + } } } - } private void importLogSettings(String springUrl, Properties mainProperties) @@ -147,7 +168,7 @@ public class Log4JHierarchyInit implements ApplicationContextAware } catch (Exception e) { - logger.warn("Failed to find additional Logger configuration: " + springUrl); + LOGGER.warn("Failed to find additional Logger configuration: " + springUrl); } // Read each resource @@ -162,12 +183,13 @@ public class Log4JHierarchyInit implements ApplicationContextAware } catch (Throwable e) { - if (logger.isDebugEnabled()) + if (LOGGER.isDebugEnabled()) { - logger.debug("Failed to add extra Logger configuration: \n" + " URL: " + springUrl + "\n" - + " Error: " + e.getMessage(), e); + LOGGER.debug("Failed to add extra Logger configuration: \n" + " URL: " + springUrl + "\n" + + " Error: " + e.getMessage(), e); } } } } -} + +} \ No newline at end of file diff --git a/repository/src/main/java/org/alfresco/repo/admin/patch/impl/CalendarAllDayEventDatesCorrectingPatch.java b/repository/src/main/java/org/alfresco/repo/admin/patch/impl/CalendarAllDayEventDatesCorrectingPatch.java index 49aa509b3b..c089d44fa9 100644 --- a/repository/src/main/java/org/alfresco/repo/admin/patch/impl/CalendarAllDayEventDatesCorrectingPatch.java +++ b/repository/src/main/java/org/alfresco/repo/admin/patch/impl/CalendarAllDayEventDatesCorrectingPatch.java @@ -2,7 +2,7 @@ * #%L * Alfresco Repository * %% - * Copyright (C) 2005 - 2016 Alfresco Software Limited + * Copyright (C) 2005 - 2022 Alfresco Software Limited * %% * This file is part of the Alfresco software. * If the software was purchased under a paid Alfresco license, the terms of @@ -34,13 +34,13 @@ import org.alfresco.query.PagingResults; import org.alfresco.repo.admin.patch.AbstractPatch; import org.alfresco.repo.calendar.CalendarModel; import org.alfresco.service.cmr.calendar.CalendarEntry; -import org.alfresco.service.cmr.calendar.CalendarEntryDTO; import org.alfresco.service.cmr.calendar.CalendarService; import org.alfresco.service.cmr.repository.ChildAssociationRef; import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.site.SiteInfo; import org.alfresco.service.cmr.site.SiteService; -import org.apache.log4j.Logger; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.extensions.surf.util.I18NUtil; /** @@ -57,7 +57,7 @@ public class CalendarAllDayEventDatesCorrectingPatch extends AbstractPatch { private static final String MSG_SUCCESS = "patch.calendarAllDayEventDatesCorrectingPatch.result"; - private static final Logger LOGGER = Logger.getLogger(CalendarAllDayEventDatesCorrectingPatch.class); + private static final Logger LOGGER = LoggerFactory.getLogger(CalendarAllDayEventDatesCorrectingPatch.class); private int batchSize = 1000; diff --git a/repository/src/main/java/org/alfresco/repo/bulkimport/impl/AbstractFilesystemTracker.java b/repository/src/main/java/org/alfresco/repo/bulkimport/impl/AbstractFilesystemTracker.java index 02b4ae5e03..34c531bb62 100644 --- a/repository/src/main/java/org/alfresco/repo/bulkimport/impl/AbstractFilesystemTracker.java +++ b/repository/src/main/java/org/alfresco/repo/bulkimport/impl/AbstractFilesystemTracker.java @@ -1,20 +1,20 @@ /* - * #%L - * Alfresco Repository - * %% - * Copyright (C) 2005 - 2016 Alfresco Software Limited - * %% - * This file is part of the Alfresco software. - * If the software was purchased under a paid Alfresco license, the terms of - * the paid license agreement will prevail. Otherwise, the software is - * provided under the following open source license terms: - * - * Alfresco is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Alfresco is distributed in the hope that it will be useful, + * #%L + * Alfresco Repository + * %% + * Copyright (C) 2005 - 2022 Alfresco Software Limited + * %% + * This file is part of the Alfresco software. + * If the software was purchased under a paid Alfresco license, the terms of + * the paid license agreement will prevail. Otherwise, the software is + * provided under the following open source license terms: + * + * Alfresco is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Alfresco is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. @@ -35,7 +35,8 @@ import org.alfresco.repo.bulkimport.DirectoryAnalyser; import org.alfresco.repo.bulkimport.FilesystemTracker; import org.alfresco.repo.bulkimport.ImportableItem; import org.alfresco.util.PropertyCheck; -import org.apache.log4j.Logger; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * @@ -44,7 +45,7 @@ import org.apache.log4j.Logger; */ public abstract class AbstractFilesystemTracker implements FilesystemTracker { - protected static Logger logger = Logger.getLogger(FilesystemTracker.class); + protected static Logger logger = LoggerFactory.getLogger(FilesystemTracker.class); protected DirectoryAnalyser directoryAnalyser = null; diff --git a/repository/src/main/java/org/alfresco/repo/event2/filter/AbstractNodeEventFilter.java b/repository/src/main/java/org/alfresco/repo/event2/filter/AbstractNodeEventFilter.java index b8832d1163..9b78cc9324 100644 --- a/repository/src/main/java/org/alfresco/repo/event2/filter/AbstractNodeEventFilter.java +++ b/repository/src/main/java/org/alfresco/repo/event2/filter/AbstractNodeEventFilter.java @@ -2,7 +2,7 @@ * #%L * Alfresco Repository * %% - * Copyright (C) 2005 - 2020 Alfresco Software Limited + * Copyright (C) 2005 - 2022 Alfresco Software Limited * %% * This file is part of the Alfresco software. * If the software was purchased under a paid Alfresco license, the terms of @@ -37,7 +37,8 @@ import org.alfresco.service.cmr.dictionary.DictionaryService; import org.alfresco.service.namespace.NamespaceException; import org.alfresco.service.namespace.NamespaceService; import org.alfresco.service.namespace.QName; -import org.apache.log4j.Logger; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * Abstract {@link EventFilter} implementation, containing common event filtering @@ -47,7 +48,7 @@ import org.apache.log4j.Logger; */ public abstract class AbstractNodeEventFilter implements EventFilter { - private static final Logger LOGGER = Logger.getLogger(AbstractNodeEventFilter.class); + private static final Logger LOGGER = LoggerFactory.getLogger(AbstractNodeEventFilter.class); private static final String MARKER_INCLUDE_SUBTYPES = "include_subtypes"; private static final String WILDCARD = "*"; diff --git a/repository/src/main/resources/alfresco/logging-context.xml b/repository/src/main/resources/alfresco/logging-context.xml index b84bf535a8..2261f47fc0 100644 --- a/repository/src/main/resources/alfresco/logging-context.xml +++ b/repository/src/main/resources/alfresco/logging-context.xml @@ -13,16 +13,16 @@ - classpath*:alfresco/module/*/log4j.properties + classpath*:alfresco/module/*/log4j2.properties - classpath*:alfresco/enterprise/*-log4j.properties + classpath*:alfresco/enterprise/*-log4j2.properties - classpath*:alfresco/extension/*-log4j.properties + classpath*:alfresco/extension/*-log4j2.properties - classpath*:alfresco/extension/dev-log4j.properties + classpath*:alfresco/extension/dev-log4j2.properties diff --git a/repository/src/test/java/org/alfresco/repo/lock/JobLockServiceTest.java b/repository/src/test/java/org/alfresco/repo/lock/JobLockServiceTest.java index 13b0693fdb..01af7a9cd6 100644 --- a/repository/src/test/java/org/alfresco/repo/lock/JobLockServiceTest.java +++ b/repository/src/test/java/org/alfresco/repo/lock/JobLockServiceTest.java @@ -2,7 +2,7 @@ * #%L * Alfresco Repository * %% - * Copyright (C) 2005 - 2021 Alfresco Software Limited + * Copyright (C) 2005 - 2022 Alfresco Software Limited * %% * This file is part of the Alfresco software. * If the software was purchased under a paid Alfresco license, the terms of @@ -47,8 +47,9 @@ import org.alfresco.util.TestHelper; import org.alfresco.util.testing.category.DBTests; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.apache.log4j.Level; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Level; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.core.config.Configurator; import org.junit.experimental.categories.Category; import org.springframework.context.ApplicationContext; @@ -389,8 +390,8 @@ public class JobLockServiceTest extends TestCase public synchronized void testLockCallbackReleaseSelf() throws Exception { // ACE-4347 extra debug logging just for this test so we can see what's going on when it next fails - Level saveLogLevel = Logger.getLogger("org.alfresco.repo.lock").getLevel(); - Logger.getLogger("org.alfresco.repo.lock").setLevel(Level.ALL); + Level saveLogLevel = LogManager.getLogger("org.alfresco.repo.lock").getLevel(); + Configurator.setLevel(LogManager.getLogger("org.alfresco.repo.lock"), Level.ALL); try { final QName lockQName = QName.createQName(NAMESPACE, getName()); @@ -444,7 +445,7 @@ public class JobLockServiceTest extends TestCase } finally { - Logger.getLogger("org.alfresco.repo.lock").setLevel(saveLogLevel); + Configurator.setLevel(LogManager.getLogger("org.alfresco.repo.lock"), saveLogLevel); } } @@ -520,8 +521,8 @@ public class JobLockServiceTest extends TestCase public void runGetLockWithCallback(int t) { // ACE-4347 extra debug logging just for this test so we can see what's going on when it next fails - Level saveLogLevel = Logger.getLogger("org.alfresco.repo.lock").getLevel(); - Logger.getLogger("org.alfresco.repo.lock").setLevel(Level.ALL); + Level saveLogLevel = LogManager.getLogger("org.alfresco.repo.lock").getLevel(); + Configurator.setLevel(LogManager.getLogger("org.alfresco.repo.lock"), Level.ALL); logger.debug("runGetLockWithCallback "+t+ "\n----------------------------------------"+ @@ -618,7 +619,7 @@ public class JobLockServiceTest extends TestCase logger.debug("runGetLockWithCallback\n----------------------------------------"); - Logger.getLogger("org.alfresco.repo.lock").setLevel(saveLogLevel); + Configurator.setLevel(LogManager.getLogger("org.alfresco.repo.lock"), saveLogLevel); } } diff --git a/repository/src/test/java/org/alfresco/repo/management/CheckRequiredClassesForLoggingConsoleUnitTest.java b/repository/src/test/java/org/alfresco/repo/management/CheckRequiredClassesForLoggingConsoleUnitTest.java index bf0d4733fa..d8b0da7ecd 100644 --- a/repository/src/test/java/org/alfresco/repo/management/CheckRequiredClassesForLoggingConsoleUnitTest.java +++ b/repository/src/test/java/org/alfresco/repo/management/CheckRequiredClassesForLoggingConsoleUnitTest.java @@ -2,7 +2,7 @@ * #%L * Alfresco Repository * %% - * Copyright (C) 2005 - 2021 Alfresco Software Limited + * Copyright (C) 2005 - 2022 Alfresco Software Limited * %% * This file is part of the Alfresco software. * If the software was purchased under a paid Alfresco license, the terms of @@ -30,7 +30,7 @@ import org.junit.Test; public class CheckRequiredClassesForLoggingConsoleUnitTest extends TestCase { - private static final String CLASS_NAME = "org.apache.log4j.jmx.HierarchyDynamicMBean"; + private static final String CLASS_NAME = "org.apache.logging.log4j.core.jmx.Server"; @Test public void testRequiredClassIsOnAClasspath() throws ClassNotFoundException diff --git a/repository/src/test/java/org/alfresco/repo/thumbnail/ThumbnailServiceImplTest.java b/repository/src/test/java/org/alfresco/repo/thumbnail/ThumbnailServiceImplTest.java index 7c18e6048d..beaa6b0b4f 100644 --- a/repository/src/test/java/org/alfresco/repo/thumbnail/ThumbnailServiceImplTest.java +++ b/repository/src/test/java/org/alfresco/repo/thumbnail/ThumbnailServiceImplTest.java @@ -81,10 +81,12 @@ import org.alfresco.util.GUID; import org.alfresco.util.TempFileProvider; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.apache.log4j.AppenderSkeleton; -import org.apache.log4j.Level; -import org.apache.log4j.Logger; -import org.apache.log4j.spi.LoggingEvent; +import org.apache.logging.log4j.Level; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.core.LogEvent; +import org.apache.logging.log4j.core.appender.AbstractAppender; +import org.apache.logging.log4j.core.config.plugins.Plugin; import org.junit.Before; import org.junit.Ignore; import org.junit.Test; @@ -107,6 +109,7 @@ import static org.alfresco.repo.rendition2.TestSynchronousTransformClient.TEST_F import static org.alfresco.repo.rendition2.TestSynchronousTransformClient.TEST_LONG_RUNNING_MIME_TYPE; import static org.alfresco.repo.rendition2.TestSynchronousTransformClient.TEST_LONG_RUNNING_PROPERTY_VALUE; import static org.alfresco.repo.rendition2.TestSynchronousTransformClient.TEST_LONG_RUNNING_TRANSFORM_TIME; +import static org.alfresco.util.log4j.Log4jAppenderUtil.addAbstractAppenderToLogger; /** * Thumbnail service implementation unit test @@ -709,19 +712,19 @@ public class ThumbnailServiceImplTest extends BaseAlfrescoSpringTest * * That is useful if you need to use the log output for your tests. */ - private class LogErrorAppender extends AppenderSkeleton + @Plugin (name = "LogErrorAppender", category = "Core") + private class LogErrorAppender extends AbstractAppender { - private final List log = new ArrayList(); + private final List log = new ArrayList(); - @Override - public boolean requiresLayout() + protected LogErrorAppender() { - return false; + super("LogErrorAppender", null, null, false, null); } @Override - protected void append(final LoggingEvent loggingEvent) + public void append(final LogEvent loggingEvent) { if(loggingEvent.getLevel() == Level.ERROR) { @@ -729,14 +732,9 @@ public class ThumbnailServiceImplTest extends BaseAlfrescoSpringTest } } - @Override - public void close() + public List getLog() { - } - - public List getLog() - { - return new ArrayList(log); + return new ArrayList(log); } } @@ -750,7 +748,9 @@ public class ThumbnailServiceImplTest extends BaseAlfrescoSpringTest { // Add the log appender to the root logger LogErrorAppender logErrorAppender = new LogErrorAppender(); - Logger.getRootLogger().addAppender(logErrorAppender); + Logger rootLogger = LogManager.getRootLogger(); + + addAbstractAppenderToLogger(logErrorAppender, rootLogger); // create content node for thumbnail node NodeRef pdfOrig = createOriginalContent(folder, MimetypeMap.MIMETYPE_PDF); diff --git a/repository/src/test/java/org/alfresco/transform/registry/LocalTransformServiceRegistryConfigTest.java b/repository/src/test/java/org/alfresco/transform/registry/LocalTransformServiceRegistryConfigTest.java index dfdf045254..52a2e4d373 100644 --- a/repository/src/test/java/org/alfresco/transform/registry/LocalTransformServiceRegistryConfigTest.java +++ b/repository/src/test/java/org/alfresco/transform/registry/LocalTransformServiceRegistryConfigTest.java @@ -40,8 +40,8 @@ import org.alfresco.transform.config.TransformOptionValue; import org.alfresco.transform.config.Transformer; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.apache.log4j.Level; -import org.apache.log4j.LogManager; +import org.apache.logging.log4j.Level; +import org.apache.logging.log4j.core.config.Configurator; import org.junit.Before; import org.junit.Test; import org.mockito.Mock; @@ -217,7 +217,7 @@ public class LocalTransformServiceRegistryConfigTest extends TransformRegistryMo initTestData(); super.setUp(); - LogManager.getLogger(LocalTransformServiceRegistryConfigTest.class).setLevel(Level.DEBUG); + Configurator.setLevel(LocalTransformServiceRegistryConfigTest.class, Level.DEBUG); } @Override diff --git a/repository/src/test/java/org/alfresco/util/log4j/Log4jAppenderUtil.java b/repository/src/test/java/org/alfresco/util/log4j/Log4jAppenderUtil.java new file mode 100644 index 0000000000..4c1d11d790 --- /dev/null +++ b/repository/src/test/java/org/alfresco/util/log4j/Log4jAppenderUtil.java @@ -0,0 +1,65 @@ +/* + * #%L + * Alfresco Repository + * %% + * Copyright (C) 2022 Alfresco Software Limited + * %% + * This file is part of the Alfresco software. + * If the software was purchased under a paid Alfresco license, the terms of + * the paid license agreement will prevail. Otherwise, the software is + * provided under the following open source license terms: + * + * Alfresco is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Alfresco is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Alfresco. If not, see . + * #L% + */ + +package org.alfresco.util.log4j; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.core.LoggerContext; +import org.apache.logging.log4j.core.appender.AbstractAppender; +import org.apache.logging.log4j.core.config.Configuration; +import org.apache.logging.log4j.core.config.Configurator; +import org.apache.logging.log4j.core.config.LoggerConfig; + +/** + * A utility class to work with log4j2 Appenders in test mode. + * + * @author Aleksandra Onych + */ +public class Log4jAppenderUtil +{ + public static void addAbstractAppenderToLogger(AbstractAppender appender, Logger logger) + { + final LoggerContext ctx = (LoggerContext) LogManager.getContext(false); + final Configuration config = ctx.getConfiguration(); + appender.start(); + LoggerConfig loggerConfig = config.getLoggerConfig(logger.getName()); + loggerConfig.addAppender(appender, null, null); + ctx.updateLoggers(); + } + + public static void removeAbstractAppenderFromLogger(AbstractAppender appender, Logger logger) + { + final LoggerContext ctx = (LoggerContext) LogManager.getContext(false); + final Configuration config = ctx.getConfiguration(); + appender.stop(); + LoggerConfig loggerConfig = config.getLoggerConfig(logger.getName()); + loggerConfig.removeAppender(appender.getName()); + ctx.updateLoggers(); + + appender = null; + } +} diff --git a/repository/src/test/resources/log4j/custom-log4j.properties b/repository/src/test/resources/log4j/custom-log4j.properties deleted file mode 100644 index b5023acad6..0000000000 --- a/repository/src/test/resources/log4j/custom-log4j.properties +++ /dev/null @@ -1,5 +0,0 @@ -## Test to see that Log4J additions are picked up -log4j.logger.org.alfresco.repo.model.filefolder.FileFolderPerformanceTester=DEBUG, consoleAppender -log4j.logger.org.alfresco.repo.admin.Log4JHierarchyInitTest=DEBUG, consoleAppender -log4j.appender.consoleAppender=org.apache.log4j.ConsoleAppender -log4j.appender.consoleAppender.layout=org.apache.log4j.PatternLayout \ No newline at end of file diff --git a/repository/src/test/resources/log4j/custom-log4j2.properties b/repository/src/test/resources/log4j/custom-log4j2.properties new file mode 100644 index 0000000000..6eabff13dd --- /dev/null +++ b/repository/src/test/resources/log4j/custom-log4j2.properties @@ -0,0 +1,11 @@ +## Test to see that Log4J additions are picked up +logger.alfresco-repo-model-filefolder-FileFolderPerformanceTester.name=org.alfresco.repo.model.filefolder.FileFolderPerformanceTester +logger.alfresco-repo-model-filefolder-FileFolderPerformanceTester.level=DEBUG +logger.alfresco-repo-model-filefolder-FileFolderPerformanceTester.appenderRef.stdout.ref=consoleAppender +logger.alfresco-repo-admin-Log4JHierarchyInitTest.name=org.alfresco.repo.admin.Log4JHierarchyInitTest +logger.alfresco-repo-admin-Log4JHierarchyInitTest.level=DEBUG +logger.alfresco-repo-admin-Log4JHierarchyInitTest.appenderRef.stdout.ref=consoleAppender + +appender.console.type=Console +appender.console.name=ConsoleAppender +appender.console.layout.type=PatternLayout \ No newline at end of file diff --git a/repository/src/test/resources/log4j/log4j-test-context.xml b/repository/src/test/resources/log4j/log4j-test-context.xml index c521c3971b..e5952002e5 100644 --- a/repository/src/test/resources/log4j/log4j-test-context.xml +++ b/repository/src/test/resources/log4j/log4j-test-context.xml @@ -8,8 +8,8 @@ - classpath*:log4j/custom-log4j.properties - classpath*:log4j/log4j.properties + classpath*:log4j/custom-log4j2.properties + classpath*:log4j/log4j2.properties diff --git a/repository/src/test/resources/log4j/log4j.properties b/repository/src/test/resources/log4j/log4j.properties deleted file mode 100644 index 610d1e9e21..0000000000 --- a/repository/src/test/resources/log4j/log4j.properties +++ /dev/null @@ -1,2 +0,0 @@ -## Test to see that Log4J additions are picked up -log4j.logger.org.alfresco.repo.admin.Log4JHierarchyInitTest=DEBUG \ No newline at end of file diff --git a/repository/src/test/resources/log4j/log4j2.properties b/repository/src/test/resources/log4j/log4j2.properties new file mode 100644 index 0000000000..2979294977 --- /dev/null +++ b/repository/src/test/resources/log4j/log4j2.properties @@ -0,0 +1,3 @@ +## Test to see that Log4J additions are picked up +logger.alfresco-repo-admin-Log4JHierarchyInitTest.name=org.alfresco.repo.admin.Log4JHierarchyInitTest +logger.alfresco-repo-admin-Log4JHierarchyInitTest.level=DEBUG \ No newline at end of file