ログを使用したAEM SDKのデバッグ

AEM SDKのログにアクセスすると、AEM SDKのローカルクイックスタートJARまたはDispatcherツールのいずれかで、AEMアプリケーションのデバッグに関する重要なインサイトを得ることができます。

AEMログ

ログはAEMアプリケーションのデバッグの最前線として機能しますが、デプロイされるAEMアプリケーションでの適切なログの記録に依存します。 Adobeでは、AEM SDKのローカルクイックスタートとAEM as a Cloud ServiceCloud Serviceの開発環境でのログの表示性が正常化され、設定の煩雑さや再デプロイメントが軽減されるので、ローカル開発とAEMの開発ログ設定を可能な限り同じにすることをお勧めします。

AEM Project Archetypeは、にあるSling Logger OSGi設定を使用して、ローカル開発用のAEMアプリケーションのJavaパッケージのデバッグレベルでログを設定します。

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

ログはerror.logに記録されます。

デフォルトのログがローカル開発に不十分な場合、アドホックログは、AEM SDKのローカルクイックスタートのログサポートWebコンソール(/system/console/slinglog)で設定できますが、Cloud Service開発環境と同じログ設定がAEMで必要な場合を除き、Gitに対するアドホックな変更は推奨されません。 ログサポートコンソールを使用した変更は、AEM SDKのローカルクイックスタートのリポジトリに直接保持されます。

Javaログステートメントは、error.logファイルで表示できます。

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

多くの場合、error.logを"tail"にして、端末に出力をストリーミングすると便利です。

Dispatcher ログ

bin/docker_runが呼び出されると、Dispatcherログがstdoutに出力されますが、Dockerに格納されているを使用してログに直接アクセスできます。

Dockerコンテナでのログへのアクセス

Dispatcherログは、/etc/httpd/logsにあるDockerコンテナから直接アクセスできます。

$ 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

のを、コ <CONTAINER ID>docker exec -it <CONTAINER ID> /bin/sh ンドにリストされたターゲットDocker CONTAINER IDに置き換える必要があ docker ps ります。

Dockerログのローカルファイルシステムへのコピー

Dispatcherログは、 /etc/httpd/logsにあるDockerコンテナからローカルファイルシステムにコピーし、お気に入りのログ分析ツールを使用して検査できます。 これはポイントインタイムコピーで、ログにリアルタイムで更新されるわけではありません。

$ 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

のを、コ <CONTAINER_ID>docker cp <CONTAINER_ID>:/var/log/apache2 ./ ンドにリストされたターゲットDocker CONTAINER IDに置き換える必要があ docker ps ります。

このページ