ACS-3160 Replace Reload4j with Log4j2 (#1204)

* [ACS-3160] replace reload4j with log4j2

* [ACS-3160] refactor log4j version in pom.xml files

* ACS-3160 Add log4j2.properties file

* [ACS-3160] convert log4jHierarchyInit properties

* ACS-3222 Generate log4j2 rolling file in the Tomcat logs directory

* ACS-3160 Fix reconfiguration in Log4JHierarchyInit

* [ACS-3160] change loggers from log4j2 to slf4j (where possible)

* ACS-3160 Load a set of augmenting/overriding log4j2.properties files

* ACS-3160 Fix CheckRequiredClassesForLoggingConsoleUnitTest (adjust to log4j2)

* ACS-3160 Enable CheckRequiredClassesForLoggingConsoleUnitTest

* [ACS-3160] add appender util class

* [ACS-3160] fix removeAbstractAppenderFromLogger

* ACS-3160 Upgrade Log4j2 and Slf4j2 versions to the latest

* ACS-3160 Temporarily remove AOS for test purposes [tas][db]

* [ACS-3160] remove setting level from removeAbstractAppenderFromLogger

* ACS-3160 Remove references to SanitizingPatternLayout [tas]

* ACS-3892 Migrate ags-community-repo AMP to Log4j2

* ACS-3892 Reduce log4j-core scope to test

* ACS-3160 Update the aos-module version to 1.5.0-DEV-LOG4J2 [tas][db]

* [ACS-3924] upgrade greenmail version

* [ACS-3924] remove exclusion from greenmail

* ACS-3160 Fix NDC

* ACS-3160 Revert the NDC_REF

* ACS-3160 Test with googledrive with Log4j2

* ACS-3160 Log4j references cleanup

Co-authored-by: Domenico Sibilio <domenicosibilio@gmail.com>
Co-authored-by: Damian.Ujma@hyland.com <Damian.Ujma@hyland.com>
This commit is contained in:
Aleksandra Onych
2022-12-05 15:07:50 +01:00
committed by GitHub
parent 728e305a93
commit b9ccd79a73
31 changed files with 976 additions and 524 deletions

View File

@@ -43,9 +43,15 @@
<dependencies>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-reload4j</artifactId>
<version>${dependency.slf4j.version}</version>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j2-impl</artifactId>
<version>${dependency.log4j.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>${dependency.log4j.version}</version>
<scope>test</scope>
</dependency>
<dependency>
@@ -62,6 +68,17 @@
<groupId>org.alfresco.tas</groupId>
<artifactId>utility</artifactId>
<version>${dependency.tas-utility.version}</version>
<!-- These exclusions can be removed once tas-utility does not rely on Reload4j anymore -->
<exclusions>
<exclusion>
<groupId>ch.qos.reload4j</groupId>
<artifactId>reload4j</artifactId>
</exclusion>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-reload4j</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -54,9 +54,14 @@
<classifier>asl</classifier>
</dependency>
<dependency>
<groupId>ch.qos.reload4j</groupId>
<artifactId>reload4j</artifactId>
<version>1.2.18.3</version>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>${dependency.log4j.version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>${dependency.log4j.version}</version>
</dependency>
<dependency>
<groupId>org.json</groupId>
@@ -113,8 +118,8 @@
<!-- Test only dependencies, as popped up while running mvn test -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-reload4j</artifactId>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j2-impl</artifactId>
<scope>test</scope>
</dependency>
<dependency>

View File

@@ -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

View File

@@ -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();
}
}

View File

@@ -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

View File

@@ -78,7 +78,6 @@
</artifactItems>
</configuration>
</execution>
<execution>
<id>copy-amps</id>
<phase>process-resources</phase>

View File

@@ -52,10 +52,6 @@
<artifactId>avalon-framework-impl</artifactId>
<version>4.3.1</version>
</dependency>
<dependency>
<groupId>org.alfresco</groupId>
<artifactId>alfresco-log-sanitizer</artifactId>
</dependency>
<!-- REPO-3918 needed libraries for Java 11 -->
<dependency>
<groupId>org.glassfish.jaxb</groupId>

View File

@@ -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

View File

@@ -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

31
pom.xml
View File

@@ -48,7 +48,6 @@
<dependency.alfresco-jlan.version>7.2</dependency.alfresco-jlan.version>
<dependency.alfresco-server-root.version>6.0.1</dependency.alfresco-server-root.version>
<dependency.alfresco-messaging-repo.version>1.2.20</dependency.alfresco-messaging-repo.version>
<dependency.alfresco-log-sanitizer.version>0.2</dependency.alfresco-log-sanitizer.version>
<dependency.activiti-engine.version>5.23.0</dependency.activiti-engine.version>
<dependency.activiti.version>5.23.0</dependency.activiti.version>
<dependency.alfresco-transform-service.version>2.0.0</dependency.alfresco-transform-service.version>
@@ -73,7 +72,8 @@
<dependency.httpcore.version>4.4.15</dependency.httpcore.version>
<dependency.commons-httpclient.version>3.1-HTTPCLIENT-1265</dependency.commons-httpclient.version>
<dependency.xercesImpl.version>2.12.2</dependency.xercesImpl.version>
<dependency.slf4j.version>2.0.1</dependency.slf4j.version>
<dependency.slf4j.version>2.0.3</dependency.slf4j.version>
<dependency.log4j.version>2.19.0</dependency.log4j.version>
<dependency.gytheio.version>0.17</dependency.gytheio.version>
<dependency.groovy.version>3.0.12</dependency.groovy.version>
<dependency.tika.version>2.4.1</dependency.tika.version>
@@ -109,8 +109,8 @@
<dependency.jakarta-json-path.version>2.7.0</dependency.jakarta-json-path.version>
<dependency.jakarta-rpc-api.version>1.1.4</dependency.jakarta-rpc-api.version>
<alfresco.googledrive.version>3.3.1</alfresco.googledrive.version>
<alfresco.aos-module.version>1.5.0</alfresco.aos-module.version>
<alfresco.googledrive.version>3.3.1-DEV-LOG4J2</alfresco.googledrive.version>
<alfresco.aos-module.version>1.5.0-DEV-LOG4J2</alfresco.aos-module.version>
<alfresco.api-explorer.version>7.3.0</alfresco.api-explorer.version> <!-- Also in alfresco-enterprise-share -->
<alfresco.maven-plugin.version>2.2.0</alfresco.maven-plugin.version>
@@ -567,17 +567,6 @@
<artifactId>commons-email</artifactId>
<version>1.5</version>
</dependency>
<dependency>
<groupId>org.alfresco</groupId>
<artifactId>alfresco-log-sanitizer</artifactId>
<version>${dependency.alfresco-log-sanitizer.version}</version>
<exclusions>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.alfresco.aos-module</groupId>
<artifactId>alfresco-aos-module</artifactId>
@@ -619,15 +608,9 @@
<version>${dependency.slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-reload4j</artifactId>
<version>${dependency.slf4j.version}</version>
<exclusions>
<exclusion>
<groupId>ch.qos.reload4j</groupId>
<artifactId>reload4j</artifactId>
</exclusion>
</exclusions>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j2-impl</artifactId>
<version>${dependency.log4j.version}</version>
</dependency>
<dependency>
<groupId>xerces</groupId>

View File

@@ -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;

View File

@@ -46,10 +46,6 @@
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
</exclusion>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
@@ -222,8 +218,9 @@
<artifactId>slf4j-api</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-reload4j</artifactId>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j2-impl</artifactId>
<version>${dependency.log4j.version}</version>
</dependency>
<dependency>
<groupId>xerces</groupId>

View File

@@ -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 <http://www.gnu.org/licenses/>.
* #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.
* <p>
* 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:
* <pre>
* config/alfresco/module/{module.id}/log4j.properties
* config/alfresco/module/{module.id}/log4j2.properties
* </pre>
* At deployment time, this log4j.properties file will be placed in:
* At deployment time, this log4j2.properties file will be placed in:
* <pre>
* WEB-INF/classes/alfresco/module/{module.id}/log4j.properties
* WEB-INF/classes/alfresco/module/{module.id}/log4j2.properties
* </pre>
* Where {module.id} is whatever value is set within the AMP's module.properties file. For details, see: <a
* href='http://wiki.alfresco.com/wiki/Developing_an_Alfresco_Module'>Developing an Alfresco Module</a>
* <p>
* For example, if {module.id} is "org.alfresco.module.someModule", then within your source code you'll have:
*
*
* <pre>
* config / alfresco / module / org.alfresco.module.someModule / log4j.properties
* config / alfresco / module / org.alfresco.module.someModule / log4j2.properties
* </pre>
*
* <p>
* This would be deployed to:
* <pre>
* WEB - INF / classes / alfresco / module / org.alfresco.module.someModule / log4j.properties
* WEB - INF / classes / alfresco / module / org.alfresco.module.someModule / log4j2.properties
* </pre>
*/
public class Log4JHierarchyInit implements ApplicationContextAware
{
private static Log logger = LogFactory.getLog(Log4JHierarchyInit.class);
private List<String> extraLog4jUrls;
private static final Log LOGGER = LogFactory.getLog(Log4JHierarchyInit.class);
private final List<String> extraLog4jUrls;
private ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
public Log4JHierarchyInit()
{
extraLog4jUrls = new ArrayList<String>();
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.
* <p>
* This function supports Spring's syntax for retrieving multiple class path resources with the same name,
* via the "classpath&#042;:" prefix. For details, see: {@link PathMatchingResourcePatternResolver}.
*/
public void setExtraLog4jUrls(List<String> 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);
}
}
}
}
}
}

View File

@@ -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;

View File

@@ -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;

View File

@@ -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<QName>
{
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 = "*";

View File

@@ -13,16 +13,16 @@
<!-- NOTE: value entries are listed from lowest precedence to highest. -->
<!-- Installed AMP modules -->
<value>classpath*:alfresco/module/*/log4j.properties</value>
<value>classpath*:alfresco/module/*/log4j2.properties</value>
<!-- Enterprise extensions -->
<value>classpath*:alfresco/enterprise/*-log4j.properties</value>
<value>classpath*:alfresco/enterprise/*-log4j2.properties</value>
<!-- Other installed extensions -->
<value>classpath*:alfresco/extension/*-log4j.properties</value>
<value>classpath*:alfresco/extension/*-log4j2.properties</value>
<!-- private developer overrides -->
<value>classpath*:alfresco/extension/dev-log4j.properties</value>
<value>classpath*:alfresco/extension/dev-log4j2.properties</value>
</list>
</property>
</bean>

View File

@@ -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);
}
}

View File

@@ -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

View File

@@ -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<LoggingEvent> log = new ArrayList<LoggingEvent>();
private final List<LogEvent> log = new ArrayList<LogEvent>();
@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<LogEvent> getLog()
{
}
public List<LoggingEvent> getLog()
{
return new ArrayList<LoggingEvent>(log);
return new ArrayList<LogEvent>(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);

View File

@@ -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

View File

@@ -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 <http://www.gnu.org/licenses/>.
* #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;
}
}

View File

@@ -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

View File

@@ -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

View File

@@ -8,8 +8,8 @@
<property name="extraLog4jUrls">
<list>
<!-- Uses 'test-resources' folder, which is on the classpath -->
<value>classpath*:log4j/custom-log4j.properties</value>
<value>classpath*:log4j/log4j.properties</value>
<value>classpath*:log4j/custom-log4j2.properties</value>
<value>classpath*:log4j/log4j2.properties</value>
</list>
</property>
</bean>

View File

@@ -1,2 +0,0 @@
## Test to see that Log4J additions are picked up
log4j.logger.org.alfresco.repo.admin.Log4JHierarchyInitTest=DEBUG

View File

@@ -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