Example development tasks - bartoszWesolowski/aem-tips GitHub Wiki
Example development tasks
A list of example development tasks that an AEM dev should be able to solve.
Installation and configuration
Run AEM with custom run mode for given environment
Run mode to be used: integration, instance type: author
Possible solutions:
- Add
sling.run.modesparameter tosling.propertiesfile under<aem-install-dir>/crx-quickstart/conf - Set
CQ_RUNMODEenv variable toauthor,integrationand start AEM with a start script (<aem-install-dir>/crx-quickstart/bin) - Add
-rparameter to start command:java - jar quickstart.jar -r author,integration(can also be -Dsling.run.modes=)
Create package with configuration for a service author and publish:
- PID
com.day.cq.wcm.core.impl.VersionManagerImplwith propertyversionmanager.createVersionOnActivation=truefor run modes
- Under /apps/project-dir create two nodes:
config.authorandconfig.publish(sling:Folder) - Under each create node
com.day.cq.wcm.core.impl.VersionManagerImplof typesling:OsgiConfigand add property with correct value
Notes:
- config will be used only if all run modes of the directory matches instance run modes
- if multiple the config with most matching run modes is used
Troubleshooting
Create custom log file
When debug port is not enabled for an instance a easy way to debug selected services is to create custom log file with low debug level (changing debug level for all log files makes it hard to use as AEM logs a lot of messages when processing requests).
This task can be done via config deployment (if logger will be added also to the project repository) or from web console.
Services to be added
- Logger for selected classes/pacakges - new service instance using service factory
org.apache.sling.commons.log.LogManager.factory.config
- Apache Sling Logging Logger Configuration
org.apache.sling.commons.log.LogManager.factory.config-custom-logger
<?xml version="1.0" encoding="UTF-8"?>
<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
jcr:primaryType="sling:OsgiConfig"
org.apache.sling.commons.log.pattern="{String}{0,date,dd.MM.yyyy HH:mm:ss.SSS} *{4}* [{2}] {3} {5}"
org.apache.sling.commons.log.names="[com.aemexampless.aem.services]"
org.apache.sling.commons.log.file="logs/custom-log-file.log"
org.apache.sling.commons.log.level="trace"
org.apache.sling.commons.log.additiv="true" />
- Optionally
Apache Sling Logging Writer Configurationcan be created to control log file rotation
- config factory
- number of files to keep
- strategy for removing old files