ログを使用したAEM SDK のデバッグ
AEM SDK のログにアクセスすると、AEM SDK ローカルクイックスタート Jar または Dispatcher ツールのいずれかで、AEM アプリケーションのデバッグに関する重要なインサイトを得ることができます。
AEM ログ
ログは AEM アプリケーションのデバッグの最前線として機能しますが、デプロイされた AEM アプリケーションでの適切なログの記録に依存します。 アドビでは、AEM SDK のローカルクイックスタートおよび AEM as a Cloud Service の開発環境でのログの表示を正規化し、設定の煩雑さや再デプロイを減らすため、ローカル開発と AEM as a Cloud Service 開発のログ設定をできるだけ類似したものにすることをお勧めします。
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)でアドホックログを設定できます。ただし、AEM as a Cloud Service の開発環境でも同じログ設定が必要な場合を除き、アドホックな変更を Git に保持することは推奨されません。 ログサポートコンソールを使用した変更は、AEM SDK のローカルクイックスタートのリポジトリに直接保持されることに注意してください。
Java ログステートメントは、error.log
ファイルで表示できます。
$ ~/aem-sdk/author/crx-quickstart/logs/error.log
多くの場合、error.log
で、出力を端末にストリーミングする「tail」を使用すると便利です。
- macOS/Linux
$ tail -f ~/aem-sdk/author/crx-quickstart/logs/error.log
- Windows では、サードパーティの tail アプリケーションまたは Powershell の Get-Content コマンドを使用する必要があります。
Dispatcher ログ
bin/docker_run
が呼び出されると、Dispatcher のログが stdout に出力されますが、ログは Docker コンテナ内で直接アクセスできます。
Docker コンテナ内のログへのアクセス dispatcher-tools-access-logs
/etc/httpd/logs
の Docker コンテナで Dispatcher ログに直接アクセスできます。
$ 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
docker exec -it <CONTAINER ID> /bin/sh
の <CONTAINER ID>
を、docker ps
コマンドからリストされたターゲット Docker コンテナ ID に置き換える必要があります。
Docker ログのローカルファイルシステムへのコピー dispatcher-tools-copy-logs
/etc/httpd/logs
の Docker コンテナから Dispatcher ログをローカルファイルシステムにコピーして、お気に入りのログ分析ツールを使用して検査できます。これはある時点のコピーで、ログにリアルタイムで更新されるわけではありません。
$ 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
docker cp <CONTAINER_ID>:/var/log/apache2 ./
の <CONTAINER_ID>
を、docker ps
コマンドからリストされたターゲット Docker コンテナ ID に置き換える必要があります。