Debugging von AEM SDK mithilfe von Protokollen

Durch den Zugriff auf die Protokolle des AEM SDK können entweder die lokalen Schnellstart-JARs des AEM SDK oder die Dispatcher-Tools wichtige Einblicke in das Debugging von AEM-Anwendungen bieten.

AEM-Protokolle

Protokolle dienen als erste Anlaufstelle für das Debugging von AEM Anwendungen, hängen jedoch von einer angemessenen Protokollierung in der bereitgestellten AEM-Anwendung ab. Adobe empfiehlt, die lokale Entwicklung und die Konfigurationen für die AEM as a Cloud Service Dev-Protokollierung so ähnlich wie möglich zu halten. Dadurch wird die Protokollsichtbarkeit für den lokalen Schnellstart des AEM SDK und Entwicklungsumgebungen von AEM as a Cloud Service normalisiert, was das Anpassen von Konfigurationen und Neuimplementierungen reduziert.

Der AEM-Projektarchetyp konfiguriert die Protokollierung auf der DEBUG-Ebene für die Java-Pakete Ihrer AEM-Anwendung für die lokale Entwicklung über die Sling Logger OSGi-Konfiguration, die Sie unter

ui.apps/src/main/content/jcr_root/apps/example/config/org.apache.sling.commons.log.LogManager.factory.config-example.cfg.json

finden, die in der Datei error.log protokolliert wird.

Wenn die Standardprotokollierung für die lokale Entwicklung nicht ausreicht, kann die Ad-hoc-Protokollierung über die Log Support-Web-Konsole in der lokalen AEM SDK Schnellstart-Konsole (/system/console/slinglog) konfiguriert werden; es wird jedoch nicht empfohlen, Ad-hoc-Änderungen in Git beizubehalten, es sei denn, genau diese Protokollkonfigurationen sind auch in AEM as a Cloud Service-Entwicklungsumgebungen erforderlich. Beachten Sie, dass über die Log Support-Konsole vorgenommene Änderungen direkt im lokalen Schnellstart-Repository vom AEM SDK übernommen werden.

Java-Protokolleinträge können in der Datei error.log angezeigt werden:

$ ~/aem-sdk/author/crx-quickstart/logs/error.log

Oft ist es nützlich, error.log zu verfolgen, dessen Ausgabe an das Terminal gestreamt wird.

Dispatcher-Protokolle

Dispatcher-Protokolle werden beim Aufruf von bin/docker_run auf stdout ausgegeben. Sie können jedoch auch direkt auf die Protokolle im Docker-Container zugreifen.

Zugreifen auf Protokolle im Docker-Container dispatcher-tools-access-logs

Auf Dispatcher-Protokolle kann direkt im Docker-Container unter /etc/httpd/logs zugegriffen werden.

$ docker ps

# locate the CONTAINER ID associated with "adobe/aem-ethos/dispatcher-publisher" IMAGE
CONTAINER ID        IMAGE                                       COMMAND                  CREATED             STATUS              PORTS                  NAMES
46127c9d7081        adobe/aem-ethos/dispatcher-publish:2.0.23   "/docker_entrypoint.…"   6 seconds ago       Up 5 seconds        0.0.0.0:8080->80/tcp   wonderful_merkle

$ docker exec -it <CONTAINER ID> /bin/sh

/ #
/ # cd /etc/httpd/logs
/ # ls
    dispatcher.log          healthcheck_access_log  httpd_access.log        httpd_error.log

# When finished viewing the logs files, exit the Docker container's shell
/# exit

Die <CONTAINER ID> in docker exec -it <CONTAINER ID> /bin/sh muss durch die Ziel-Docker-Container-ID aus dem Befehl docker ps ersetzt werden.

Kopieren der Docker-Protokolle auf das lokale Dateisystem dispatcher-tools-copy-logs

Dispatcher-Protokolle können im Docker-Container unter /etc/httpd/logs kopiert werden, sodass Sie sie im lokalen Dateisystem mit Ihrem bevorzugten Log-Analyse-Tool überprüfen können. Beachten Sie, dass es sich hierbei um eine Point-in-Time-Kopie handelt und keine Echtzeitaktualisierungen der Protokolle bereitgestellt werden.

$ docker ps

# locate the CONTAINER ID associated with "adobe/aem-ethos/dispatcher-publisher" IMAGE
CONTAINER ID        IMAGE                                       COMMAND                  CREATED             STATUS              PORTS                  NAMES
46127c9d7081        adobe/aem-ethos/dispatcher-publish:2.0.23   "/docker_entrypoint.…"   6 seconds ago       Up 5 seconds        0.0.0.0:8080->80/tcp   wonderful_merkle

$ docker cp -L <CONTAINER ID>:/etc/httpd/logs logs
$ cd logs
$ ls
    dispatcher.log          healthcheck_access_log  httpd_access.log        httpd_error.log

Die <CONTAINER_ID> in docker cp <CONTAINER_ID>:/var/log/apache2 ./ muss durch die Ziel-Docker-Container-ID aus dem Befehl docker ps ersetzt werden.

recommendation-more-help
4859a77c-7971-4ac9-8f5c-4260823c6f69