diff --git a/hashable-repo/pom.xml b/hashable-repo/pom.xml
index 6e14cc9..1d1fe9a 100644
--- a/hashable-repo/pom.xml
+++ b/hashable-repo/pom.xml
@@ -62,6 +62,19 @@
test
+
+ org.apache.logging.log4j
+ log4j-api
+ 2.17.1
+ provided
+
+
+ org.apache.logging.log4j
+ log4j-to-slf4j
+ 2.17.1
+ provided
+
+
${alfresco.groupId}
diff --git a/hashable-repo/src/main/docker/dev-log4j.properties b/hashable-repo/src/main/docker/dev-log4j.properties
deleted file mode 100644
index 370a13e..0000000
--- a/hashable-repo/src/main/docker/dev-log4j.properties
+++ /dev/null
@@ -1,267 +0,0 @@
-# Set root logger level to error
-log4j.rootLogger=error, Console, File
-
-
-# All outputs currently set to be a ConsoleAppender.
-log4j.appender.Console=org.apache.log4j.ConsoleAppender
-log4j.appender.Console.layout=org.apache.log4j.PatternLayout
-
-# 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
-
-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.apache.log4j.PatternLayout
-log4j.appender.File.layout.ConversionPattern=%d{yyyy-MM-dd} %d{ABSOLUTE} %-5p [%c] [%t] %m%n
-
-#log4j.appender.file=org.apache.log4j.FileAppender
-#log4j.appender.file.File=hibernate.log
-#log4j.appender.file.layout=org.apache.log4j.PatternLayout
-#log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
-
-
-# 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
-
-# OpenOfficeConnection
-log4j.logger.net.sf.jooreports.openoffice.connection=fatal
-
-# 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.util.OpenOfficeConnectionTester=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
-
-# CIFS server debugging
-log4j.logger.org.alfresco.smb.protocol=error
-#log4j.logger.org.alfresco.smb.protocol.auth=debug
-#log4j.logger.org.alfresco.acegi=debug
-
-# 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
-
-# NTLM servlet filters
-#log4j.logger.org.alfresco.web.app.servlet.NTLMAuthenticationFilter=debug
-#log4j.logger.org.alfresco.repo.webdav.auth.NTLMAuthenticationFilter=debug
-
-# 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
-
-# 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
-
-
-# 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.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
-
-# Reduces PDFont error level due to ALF-7105
-log4j.logger.org.apache.pdfbox.pdmodel.font.PDSimpleFont=fatal
-log4j.logger.org.apache.pdfbox.pdmodel.font.PDFont=fatal
-log4j.logger.org.apache.pdfbox.pdmodel.font.PDCIDFont=fatal
-
-# 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
-
-#-----------------------------------------------------------------------
-# Platform module logging
-#-----------------------------------------------------------------------
-log4j.logger.br.com.dgcloud.platformsample.DemoComponent=debug
-log4j.logger.br.com.dgcloud.platformsample.HelloWorldWebScript=debug
-
-
-
diff --git "a/hashable-repo/src/main/docker/dev\342\200\221log4j2.properties" "b/hashable-repo/src/main/docker/dev\342\200\221log4j2.properties"
new file mode 100644
index 0000000..bfc7894
--- /dev/null
+++ "b/hashable-repo/src/main/docker/dev\342\200\221log4j2.properties"
@@ -0,0 +1,391 @@
+# Set root logger level to error
+rootLogger.level = error
+rootLogger.appenderRef.stdout.ref = Console
+rootLogger.appenderRef.file.ref = File
+
+# Console appender
+appender.console.type = Console
+appender.console.name = Console
+appender.console.layout.type = PatternLayout
+appender.console.layout.pattern = %d{ISO8601} %x %-5p [%c{3}] [%t] %m%n
+
+# File appender
+appender.file.type = RollingFile
+appender.file.name = File
+appender.file.fileName = alfresco.log
+appender.file.filePattern = alfresco-%d{yyyy-MM-dd}.log
+appender.file.layout.type = PatternLayout
+appender.file.layout.pattern = %d{yyyy-MM-dd} %d{ABSOLUTE} %-5p [%c] [%t] %m%n
+appender.file.policies.type = Policies
+appender.file.policies.time.type = TimeBasedTriggeringPolicy
+appender.file.policies.time.interval = 1
+appender.file.policies.time.modulate = true
+
+# Hibernate
+logger.hibernate.name = org.hibernate
+logger.hibernate.level = error
+
+logger.hibernate_exception.name = org.hibernate.util.JDBCExceptionReporter
+logger.hibernate_exception.level = fatal
+
+logger.hibernate_flushing.name = org.hibernate.event.def.AbstractFlushingEventListener
+logger.hibernate_flushing.level = fatal
+
+logger.hibernate_type.name = org.hibernate.type
+logger.hibernate_type.level = warn
+
+logger.hibernate_settings.name = org.hibernate.cfg.SettingsFactory
+logger.hibernate_settings.level = warn
+
+# Spring
+logger.spring.name = org.springframework
+logger.spring.level = warn
+
+logger.spring_remoting.name = org.springframework.remoting.support
+logger.spring_remoting.level = error
+
+logger.spring_util.name = org.springframework.util
+logger.spring_util.level = error
+
+# Axis/WSS4J
+logger.axis.name = org.apache.axis
+logger.axis.level = info
+
+logger.ws.name = org.apache.ws
+logger.ws.level = info
+
+# CXF
+logger.cxf.name = org.apache.cxf
+logger.cxf.level = error
+
+# MyFaces
+logger.myfaces_debug.name = org.apache.myfaces.util.DebugUtils
+logger.myfaces_debug.level = info
+
+logger.myfaces_resolver.name = org.apache.myfaces.el.VariableResolverImpl
+logger.myfaces_resolver.level = error
+
+logger.myfaces_handler.name = org.apache.myfaces.application.jsp.JspViewHandlerImpl
+logger.myfaces_handler.level = error
+
+logger.myfaces_taglib.name = org.apache.myfaces.taglib
+logger.myfaces_taglib.level = error
+
+# OpenOfficeConnection
+logger.oo_connection.name = net.sf.jooreports.openoffice.connection
+logger.oo_connection.level = fatal
+
+# Alfresco
+logger.alfresco.name = org.alfresco
+logger.alfresco.level = error
+
+logger.alfresco_admin.name = org.alfresco.repo.admin
+logger.alfresco_admin.level = info
+
+logger.alfresco_txn.name = org.alfresco.repo.transaction
+logger.alfresco_txn.level = warn
+
+logger.alfresco_cache.name = org.alfresco.repo.cache.TransactionalCache
+logger.alfresco_cache.level = warn
+
+logger.alfresco_filefolder.name = org.alfresco.repo.model.filefolder
+logger.alfresco_filefolder.level = warn
+
+logger.alfresco_tenant.name = org.alfresco.repo.tenant
+logger.alfresco_tenant.level = info
+
+logger.alfresco_config.name = org.alfresco.config
+logger.alfresco_config.level = warn
+
+logger.alfresco_config_jndi.name = org.alfresco.config.JndiObjectFactoryBean
+logger.alfresco_config_jndi.level = warn
+
+logger.alfresco_config_jboss.name = org.alfresco.config.JBossEnabledWebApplicationContext
+logger.alfresco_config_jboss.level = warn
+
+logger.alfresco_subsystems.name = org.alfresco.repo.management.subsystems
+logger.alfresco_subsystems.level = warn
+
+logger.alfresco_childctx.name = org.alfresco.repo.management.subsystems.ChildApplicationContextFactory
+logger.alfresco_childctx.level = info
+
+logger.alfresco_childctx_child.name = org.alfresco.repo.management.subsystems.ChildApplicationContextFactory$ChildApplicationContext
+logger.alfresco_childctx_child.level = warn
+
+logger.alfresco_security_sync.name = org.alfresco.repo.security.sync
+logger.alfresco_security_sync.level = info
+
+logger.alfresco_security_person.name = org.alfresco.repo.security.person
+logger.alfresco_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_descriptor.name = org.alfresco.service.descriptor.DescriptorService
+logger.alfresco_descriptor.level = info
+
+logger.alfresco_importer.name = org.alfresco.repo.importer.ImporterBootstrap
+logger.alfresco_importer.level = error
+
+logger.alfresco_patch.name = org.alfresco.repo.admin.patch.PatchExecuter
+logger.alfresco_patch.level = info
+
+logger.alfresco_patch_dao.name = org.alfresco.repo.domain.patch.ibatis.PatchDAOImpl
+logger.alfresco_patch_dao.level = info
+
+logger.alfresco_patch_deployment.name = org.alfresco.repo.admin.patch.impl.DeploymentMigrationPatch
+logger.alfresco_patch_deployment.level = info
+
+logger.alfresco_version.name = org.alfresco.repo.version.VersionMigrator
+logger.alfresco_version.level = info
+
+logger.alfresco_module.name = org.alfresco.repo.module.ModuleServiceImpl
+logger.alfresco_module.level = info
+
+logger.alfresco_schema.name = org.alfresco.repo.domain.schema.SchemaBootstrap
+logger.alfresco_schema.level = info
+
+logger.alfresco_config_checker.name = org.alfresco.repo.admin.ConfigurationChecker
+logger.alfresco_config_checker.level = info
+
+logger.alfresco_index.name = org.alfresco.repo.node.index.AbstractReindexComponent
+logger.alfresco_index.level = warn
+
+logger.alfresco_index_txn.name = org.alfresco.repo.node.index.IndexTransactionTracker
+logger.alfresco_index_txn.level = warn
+
+logger.alfresco_index_recovery.name = org.alfresco.repo.node.index.FullIndexRecoveryComponent
+logger.alfresco_index_recovery.level = info
+
+logger.alfresco_oo.name = org.alfresco.util.OpenOfficeConnectionTester
+logger.alfresco_oo.level = info
+
+logger.alfresco_node_dao.name = org.alfresco.repo.node.db.hibernate.HibernateNodeDaoServiceImpl
+logger.alfresco_node_dao.level = warn
+
+logger.alfresco_dirty_session.name = org.alfresco.repo.domain.hibernate.DirtySessionMethodInterceptor
+logger.alfresco_dirty_session.level = warn
+
+logger.alfresco_txn_retry.name = org.alfresco.repo.transaction.RetryingTransactionHelper
+logger.alfresco_txn_retry.level = warn
+
+logger.alfresco_txn_user.name = org.alfresco.util.transaction.SpringAwareUserTransaction.trace
+logger.alfresco_txn_user.level = warn
+
+logger.alfresco_trigger.name = org.alfresco.util.AbstractTriggerBean
+logger.alfresco_trigger.level = warn
+
+logger.alfresco_cluster.name = org.alfresco.enterprise.repo.cluster
+logger.alfresco_cluster.level = info
+
+logger.alfresco_version_service.name = org.alfresco.repo.version.Version2ServiceImpl
+logger.alfresco_version_service.level = warn
+
+logger.alfresco_node_string.name = org.alfresco.repo.node.db.NodeStringLengthWorker
+logger.alfresco_node_string.level = info
+
+logger.alfresco_workflow.name = org.alfresco.repo.workflow
+logger.alfresco_workflow.level = info
+
+# CIFS server debugging
+logger.alfresco_smb.name = org.alfresco.smb.protocol
+logger.alfresco_smb.level = error
+
+# FTP server debugging
+logger.alfresco_ftp.name = org.alfresco.ftp.protocol
+logger.alfresco_ftp.level = error
+
+# WebDAV debugging
+logger.alfresco_webdav.name = org.alfresco.webdav.protocol
+logger.alfresco_webdav.level = info
+
+# File servers
+logger.alfresco_fileserver.name = org.alfresco.fileserver
+logger.alfresco_fileserver.level = warn
+
+# Integrity message threshold
+logger.alfresco_integrity.name = org.alfresco.repo.node.integrity
+logger.alfresco_integrity.level = error
+
+# Indexer debugging
+logger.alfresco_indexer.name = org.alfresco.repo.search.Indexer
+logger.alfresco_indexer.level = error
+
+logger.alfresco_lucene_index.name = org.alfresco.repo.search.impl.lucene.index
+logger.alfresco_lucene_index.level = error
+
+logger.alfresco_fts.name = org.alfresco.repo.search.impl.lucene.fts.FullTextSearchIndexerImpl
+logger.alfresco_fts.level = warn
+
+# Property sheet and modelling debugging
+logger.alfresco_missing_props.name = alfresco.missingProperties
+logger.alfresco_missing_props.level = warn
+
+# Dictionary/Model debugging
+logger.alfresco_dictionary.name = org.alfresco.repo.dictionary
+logger.alfresco_dictionary.level = warn
+
+logger.alfresco_dictionary_period.name = org.alfresco.repo.dictionary.types.period
+logger.alfresco_dictionary_period.level = warn
+
+# Virtualization Server Registry
+logger.alfresco_virt.name = org.alfresco.mbeans.VirtServerRegistry
+logger.alfresco_virt.level = error
+
+# Spring context runtime property setter
+logger.alfresco_runtime_props.name = org.alfresco.util.RuntimeSystemPropertiesSetter
+logger.alfresco_runtime_props.level = info
+
+# Debugging options for clustering
+logger.alfresco_content_store.name = org.alfresco.repo.content.ReplicatingContentStore
+logger.alfresco_content_store.level = error
+
+logger.alfresco_replication.name = org.alfresco.repo.content.replication
+logger.alfresco_replication.level = error
+
+# Activity service
+logger.alfresco_activities.name = org.alfresco.repo.activities
+logger.alfresco_activities.level = warn
+
+# User usage tracking
+logger.alfresco_usage.name = org.alfresco.repo.usage
+logger.alfresco_usage.level = info
+
+# Sharepoint
+logger.alfresco_vti.name = org.alfresco.module.vti
+logger.alfresco_vti.level = info
+
+# Forms Engine
+logger.alfresco_forms_config.name = org.alfresco.web.config.forms
+logger.alfresco_forms_config.level = info
+
+logger.alfresco_forms_scripts.name = org.alfresco.web.scripts.forms
+logger.alfresco_forms_scripts.level = info
+
+# CMIS
+logger.alfresco_opencmis.name = org.alfresco.opencmis
+logger.alfresco_opencmis.level = error
+
+logger.alfresco_cmis_interceptor.name = org.alfresco.opencmis.AlfrescoCmisServiceInterceptor
+logger.alfresco_cmis_interceptor.level = error
+
+logger.alfresco_cmis.name = org.alfresco.cmis
+logger.alfresco_cmis.level = error
+
+logger.alfresco_cmis_dict.name = org.alfresco.cmis.dictionary
+logger.alfresco_cmis_dict.level = warn
+
+logger.apache_cmis.name = org.apache.chemistry.opencmis
+logger.apache_cmis.level = info
+
+logger.apache_cmis_browser.name = org.apache.chemistry.opencmis.server.impl.browser.CmisBrowserBindingServlet
+logger.apache_cmis_browser.level = off
+
+logger.apache_cmis_atom.name = org.apache.chemistry.opencmis.server.impl.atompub.CmisAtomPubServlet
+logger.apache_cmis_atom.level = off
+
+# IMAP
+logger.alfresco_imap.name = org.alfresco.repo.imap
+logger.alfresco_imap.level = info
+
+# JBPM
+logger.jbpm.name = org.jbpm.graph.def.GraphElement
+logger.jbpm.level = fatal
+
+# Web Framework
+logger.spring_webscripts.name = org.springframework.extensions.webscripts
+logger.spring_webscripts.level = info
+
+logger.script_logger.name = org.springframework.extensions.webscripts.ScriptLogger
+logger.script_logger.level = warn
+
+logger.script_debugger.name = org.springframework.extensions.webscripts.ScriptDebugger
+logger.script_debugger.level = off
+
+# Repository
+logger.alfresco_webscripts.name = org.alfresco.repo.web.scripts
+logger.alfresco_webscripts.level = warn
+
+logger.alfresco_webscripts_test.name = org.alfresco.repo.web.scripts.BaseWebScriptTest
+logger.alfresco_webscripts_test.level = info
+
+logger.alfresco_rhino.name = org.alfresco.repo.web.scripts.AlfrescoRhinoScriptDebugger
+logger.alfresco_rhino.level = off
+
+logger.alfresco_jscript.name = org.alfresco.repo.jscript
+logger.alfresco_jscript.level = error
+
+logger.alfresco_jscript_logger.name = org.alfresco.repo.jscript.ScriptLogger
+logger.alfresco_jscript_logger.level = warn
+
+logger.alfresco_cmis_test.name = org.alfresco.repo.cmis.rest.CMISTest
+logger.alfresco_cmis_test.level = info
+
+logger.alfresco_schema_script.name = org.alfresco.repo.domain.schema.script.ScriptBundleExecutorImpl
+logger.alfresco_schema_script.level = off
+
+logger.alfresco_script_exec.name = org.alfresco.repo.domain.schema.script.ScriptExecutorImpl
+logger.alfresco_script_exec.level = info
+
+logger.alfresco_solr_facet.name = org.alfresco.repo.search.impl.solr.facet.SolrFacetServiceImpl
+logger.alfresco_solr_facet.level = info
+
+# Bulk Filesystem Import Tool
+logger.alfresco_bulk_import.name = org.alfresco.repo.bulkimport
+logger.alfresco_bulk_import.level = warn
+
+# Freemarker
+logger.freemarker.name = freemarker.runtime
+logger.freemarker.level = info
+
+# Metadata extraction
+logger.alfresco_metadata.name = org.alfresco.repo.content.metadata.AbstractMappingMetadataExtracter
+logger.alfresco_metadata.level = warn
+
+# PDFBox
+logger.pdfbox_font.name = org.apache.pdfbox.pdmodel.font.PDSimpleFont
+logger.pdfbox_font.level = fatal
+
+logger.pdfbox_font2.name = org.apache.pdfbox.pdmodel.font.PDFont
+logger.pdfbox_font2.level = fatal
+
+logger.pdfbox_cidfont.name = org.apache.pdfbox.pdmodel.font.PDCIDFont
+logger.pdfbox_cidfont.level = fatal
+
+# no index support
+logger.alfresco_noindex_indexer.name = org.alfresco.repo.search.impl.noindex.NoIndexIndexer
+logger.alfresco_noindex_indexer.level = fatal
+
+logger.alfresco_noindex_search.name = org.alfresco.repo.search.impl.noindex.NoIndexSearchService
+logger.alfresco_noindex_search.level = fatal
+
+# lucene index warnings
+logger.alfresco_index_info.name = org.alfresco.repo.search.impl.lucene.index.IndexInfo
+logger.alfresco_index_info.level = warn
+
+# RMI socket bind retries
+logger.alfresco_socket.name = org.alfresco.util.remote.server.socket.HostConfigurableSocketFactory
+logger.alfresco_socket.level = warn
+
+# Usage monitoring
+logger.alfresco_usage_monitor.name = org.alfresco.repo.usage.RepoUsageMonitor
+logger.alfresco_usage_monitor.level = info
+
+# Authorization
+logger.alfresco_auth.name = org.alfresco.enterprise.repo.authorization.AuthorizationService
+logger.alfresco_auth.level = info
+
+logger.alfresco_auth_consistency.name = org.alfresco.enterprise.repo.authorization.AuthorizationsConsistencyMonitor
+logger.alfresco_auth_consistency.level = warn
+
+#-----------------------------------------------------------------------
+# Platform module logging
+#-----------------------------------------------------------------------
+logger.platform_demo.name = br.com.dgcloud.platformsample.DemoComponent
+logger.platform_demo.level = debug
+
+logger.hello_world.name = br.com.dgcloud.platformsample.HelloWorldWebScript
+logger.hello_world.level = debug
\ No newline at end of file
diff --git a/hashable-repo/src/main/java/br/com/dgcloud/hashable/ContentHasher.java b/hashable-repo/src/main/java/br/com/dgcloud/hashable/ContentHasher.java
index 48a3de2..03cbd83 100644
--- a/hashable-repo/src/main/java/br/com/dgcloud/hashable/ContentHasher.java
+++ b/hashable-repo/src/main/java/br/com/dgcloud/hashable/ContentHasher.java
@@ -37,14 +37,15 @@
import org.alfresco.service.cmr.repository.NodeService;
import org.alfresco.service.namespace.NamespaceService;
import org.alfresco.service.namespace.QName;
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
import br.com.dgcloud.hashable.model.HashableModel;
public class ContentHasher implements OnAddAspectPolicy, OnContentUpdatePolicy,
OnUpdatePropertiesPolicy {
- private static final Logger logger = Logger.getLogger(ContentHasher.class);
+ private static final Logger logger = LogManager.getLogger(ContentHasher.class);
private static final String DEFAULT_HASH_TYPE = "md5";
private static final int BUFFER_SIZE = 1 << 8;
diff --git a/hashable-repo/src/main/resources/alfresco/module/hashable-repo/log4j.properties b/hashable-repo/src/main/resources/alfresco/module/hashable-repo/log4j2.properties
similarity index 100%
rename from hashable-repo/src/main/resources/alfresco/module/hashable-repo/log4j.properties
rename to hashable-repo/src/main/resources/alfresco/module/hashable-repo/log4j2.properties
diff --git a/hashable-share/src/main/docker/log4j.properties b/hashable-share/src/main/docker/log4j.properties
deleted file mode 100644
index b2f1566..0000000
--- a/hashable-share/src/main/docker/log4j.properties
+++ /dev/null
@@ -1,54 +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.apache.log4j.PatternLayout
-
-# 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=share.log
-log4j.appender.File.Append=true
-log4j.appender.File.DatePattern='.'yyyy-MM-dd
-log4j.appender.File.layout=org.apache.log4j.PatternLayout
-log4j.appender.File.layout.ConversionPattern=%d{yyyy-MM-dd} %d{ABSOLUTE} %-5p [%c] [%t] %m%n
-
-# 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
-
-# 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
-
-# Alfresco
-log4j.logger.org.alfresco=error
-log4j.logger.org.alfresco.config=warn
-log4j.logger.org.alfresco.config.JndiObjectFactoryBean=warn
-log4j.logger.org.alfresco.web=info
-
-# 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
-
-# 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=
-
-#-----------------------------------------------------------------------
-# Custom Share module logging goes here...
-#-----------------------------------------------------------------------
-
-
-
diff --git a/hashable-share/src/main/docker/log4j2.properties b/hashable-share/src/main/docker/log4j2.properties
new file mode 100644
index 0000000..f9d23cc
--- /dev/null
+++ b/hashable-share/src/main/docker/log4j2.properties
@@ -0,0 +1,71 @@
+# Set root logger level to error
+rootLogger.level = error
+rootLogger.appenderRef.stdout.ref = Console
+rootLogger.appenderRef.file.ref = File
+
+# Console appender
+appender.console.type = Console
+appender.console.name = Console
+appender.console.layout.type = PatternLayout
+appender.console.layout.pattern = %d{ISO8601} %x %-5p [%c{3}] [%t] %m%n
+
+# File appender
+appender.file.type = RollingFile
+appender.file.name = File
+appender.file.fileName = share.log
+appender.file.filePattern = share-%d{yyyy-MM-dd}.log
+appender.file.layout.type = PatternLayout
+appender.file.layout.pattern = %d{yyyy-MM-dd} %d{ABSOLUTE} %-5p [%c] [%t] %m%n
+appender.file.policies.type = Policies
+appender.file.policies.time.type = TimeBasedTriggeringPolicy
+appender.file.policies.time.interval = 1
+appender.file.policies.time.modulate = true
+
+# Loggers
+logger.spring.name = org.springframework
+logger.spring.level = warn
+
+logger.spring_remoting.name = org.springframework.remoting.support
+logger.spring_remoting.level = error
+
+logger.spring_util.name = org.springframework.util
+logger.spring_util.level = error
+
+logger.myfaces_debug.name = org.apache.myfaces.util.DebugUtils
+logger.myfaces_debug.level = info
+
+logger.myfaces_resolver.name = org.apache.myfaces.el.VariableResolverImpl
+logger.myfaces_resolver.level = error
+
+logger.myfaces_handler.name = org.apache.myfaces.application.jsp.JspViewHandlerImpl
+logger.myfaces_handler.level = error
+
+logger.myfaces_taglib.name = org.apache.myfaces.taglib
+logger.myfaces_taglib.level = error
+
+logger.alfresco.name = org.alfresco
+logger.alfresco.level = error
+
+logger.alfresco_config.name = org.alfresco.config
+logger.alfresco_config.level = warn
+
+logger.alfresco_config_jndi.name = org.alfresco.config.JndiObjectFactoryBean
+logger.alfresco_config_jndi.level = warn
+
+logger.alfresco_web.name = org.alfresco.web
+logger.alfresco_web.level = info
+
+logger.webscripts.name = org.springframework.extensions.webscripts
+logger.webscripts.level = info
+
+logger.scriptlogger.name = org.springframework.extensions.webscripts.ScriptLogger
+logger.scriptlogger.level = warn
+
+logger.scriptdebugger.name = org.springframework.extensions.webscripts.ScriptDebugger
+logger.scriptdebugger.level = off
+
+logger.freemarker.name = freemarker.runtime
+logger.freemarker.level = info
+
+# Custom Share module logging
+# Add your custom loggers here using the same pattern
\ No newline at end of file
diff --git a/hashable-share/src/main/resources/alfresco/module/hashable-share/log4j.properties b/hashable-share/src/main/resources/alfresco/module/hashable-share/log4j2.properties
similarity index 100%
rename from hashable-share/src/main/resources/alfresco/module/hashable-share/log4j.properties
rename to hashable-share/src/main/resources/alfresco/module/hashable-share/log4j2.properties