日誌在as a Cloud Service中充當調試應AEM用程AEM序的前線,但取決於在已部署的應用程式中進行充分的記AEM錄。
給定環境服務(作者、發佈/發佈調度程式AEM)的所有日誌活動都合併到單個日誌檔案中,即使該服務中的不同資料夾生成日誌語句也是如此。
Pod Id在每條log語句中提供,允許過濾或整理log語句。 Pod ID的格式為:
cm-p<PROGRAM ID>-e<ENVIRONMENT ID>-aem-<author|publish>-<POD NAME>
cm-p12345-e56789-aem-author-abcdefabde-98765
由AEM於Cloud Services不支援自定義日誌檔案,但它支援自定義日誌。
使Java日誌在as a Cloud Service中AEM可用(通過 雲管理器 或 Adobe I/OCLI),必須編寫自定義日誌語句 error.log
。 寫入自定義命名日誌的日誌,如 example.log
,無法從AEMas a Cloud Service訪問。
日誌可寫入 error.log
在應用程式的 org.apache.sling.commons.log.LogManager.factory.config~example.cfg.json
的子菜單。
{
...
"org.apache.sling.commons.log.file": "logs/error.log"
...
}
AEM Author和Publish服務都提供運行時服AEM務器日誌:
aemerror
是Java錯誤日誌(位於 /crx-quickstart/logs/error.log
)AEM的正文。 以下是 建議的日誌級別 對於按環境類型的自定義記錄器:
DEBUG
WARN
ERROR
aemaccess
列出對服務的HTTP請AEM求及詳細資訊aemrequest
列出對服務的HTTP請AEM求及其相應的HTTP響應只有AEM Publish Dispatcher提供Apache Web伺服器和Dispatcher日誌,因為這些方面僅存在於AEM Publish層中,而不存在於AEM Author層中。
httpdaccess
列出對服務的AEMApache Web伺服器/Dispatcher發出的HTTP請求。httperror
列出來自Apache Web伺服器的日誌消息,並幫助調試支援的Apache模組,如 mod_rewrite
。
DEBUG
WARN
ERROR
aemdispatcher
列出Dispatcher模組中的日誌消息,包括從快取消息中篩選和提供服務。
DEBUG
WARN
ERROR
Adobe雲管理器允許通過環境的「下載日誌」操作按天下載日誌。
這些日誌可以通過任何日誌分析工具下載和檢查。
Adobe雲管理器支援通AEM過以下方式訪問as a Cloud Service日誌 Adobe I/OCLI 和 用於Adobe I/OCLI的Cloud Manager插件。
首先, 使用Cloud Manager插件設定Adobe I/O。
確保已識別相關的程式ID和環境ID,並使用 清單可用日誌選項 列出用於 尾 或 下載 日誌。
$ aio cloudmanager:list-programs
Program Id Name Enabled
14304 Program 1 true
11454 Program 2 true
11502 Program 3 true
$ aio config:set cloudmanager_programid <PROGRAM ID>
$ aio cloudmanager:list-environments
Environment Id Name Type Description
22295 program-3-dev dev
22310 program-3-prod prod
22294 program-3-stage stage
$ aio cloudmanager:list-available-log-options <ENVIRONMENT ID>
Environment Id Service Name
22295 author aemaccess
22295 author aemerror
22295 author aemrequest
22295 publish aemaccess
22295 publish aemerror
22295 publish aemrequest
22295 dispatcher httpdaccess
22295 dispatcher httpderror
22295 dispatcher aemdispatcher
Adobe I/OCLI使用CLI從as a Cloud Service即時跟蹤AEM日誌 尾日誌 的子菜單。 跟蹤在as a Cloud Service環境上執行操作時對即時日誌活動AEM非常有用。
$ aio config:set cloudmanager_programid <PROGRAM ID>
$ aio cloudmanager:tail-logs <ENVIRONMENT ID> <SERVICE> <NAME>
其他命令行工具,如 grep
可與 tail-logs
幫助隔離感興趣的日誌語句,例如:
$ aio cloudmanager:tail-logs 12345 author | grep com.example.MySlingModel
…僅顯示從 com.example.MySlingModel
或者包含字串。
Adobe I/OCLI提供了從as a Cloud Service下載日誌AEM的功能 下載日誌)命令。 這與從Cloud Manager Web UI下載日誌的結果相同,其區別是 download-logs
命令根據請求的日誌天數整合日誌。
$ aio config:set cloudmanager_programid <PROGRAM ID>
$ aio cloudmanager:download-logs <ENVIRONMENT> <SERVICE> <NAME> <DAYS>
as a Cloud Service中AEM的日誌有多個pod將日誌語句寫入其中。 因為多AEM個實例寫入同一日誌檔案,所以瞭解在調試時如何分析和降低噪音非常重要。 要解釋,以下 aemerror
將使用日誌段:
01.01.2020 12:00:00.000 [cm-p12345-e56789-aem-author-abcdefg-1111] *DEBUG* [qtp2078364989-269] com.example.components.impl.ExampleModelImpl Preparing to collect resources
01.01.2020 12:00:01.002 [cm-p12345-e56789-aem-author-abcdefg-2222] *WARN* [qtp40782847611-87] com.example.services.impl.ExampleServiceImpl Unable to resolve resource [ /content/example ] to a resource. Aborting.
01.01.2020 12:00:02.003 [cm-p12345-e56789-aem-author-abcdefg-1111] *ERROR* [qtp2078364989-269] com.example.components.impl.ExampleModelImpl Unable to collect any resources
使用Pod Id,即在日期和時間之後的資料點,日誌可以由Pod或服務中的實例AEM進行整理,從而更容易跟蹤和理解代碼執行。
Pod cm-p12345-e56789-aem-author-abcdefg-1111
01.01.2020 12:00:00.000 [cm-p12345-e56789-aem-author-abcdefg-1111] *DEBUG* [qtp2078364989-269] com.example.components.impl.ExampleModelImpl Preparing to collect resources
01.01.2020 12:00:02.003 [cm-p12345-e56789-aem-author-abcdefg-1111] *ERROR* [qtp2078364989-269] com.example.components.impl.ExampleModelImpl Unable to collect any resources
Pod cm-p12345-e56789-aem-author-abcdefg-2222
01.01.2020 12:00:01.002 [cm-p12345-e56789-aem-author-abcdefg-2222] *WARN* [qtp2078364989-269] com.example.services.impl.ExampleServiceImpl Unable to resolve resource [ /content/example ] to a resource. Aborting.
Adobe對每個as a Cloud Service環境的日誌級AEM別的一般指導是:
DEBUG
DEBUG
WARN
ERROR
為每種環境類型設定最合適的日誌級別時AEMas a Cloud Service,日誌級別在代碼中保持
…因此,需要部署來改變。
為每個環境設定靜態的已知Java日誌級別的替代方法是AEM用作Cloud Service 環境特定變數 參數化日誌級別,允許通過 Adobe I/OCLI和Cloud Manager插件。
這需要更新記錄OSGi配置以使用環境特定變數佔位符。 預設值 對於日誌級別,應設定為 Adobe建議。 例如:
/apps/example/config/org.apache.sling.commons.log.LogManager.factory.config~example.cfg.json
{
...
"org.apache.sling.commons.log.names": ["com.example"],
"org.apache.sling.commons.log.level": "$[env:LOG_LEVEL;default=DEBUG]"
...
}
這一方法有其弊端,必須加以考慮:
特定於環境的變數不適用於Apache Web伺服器或Dispatcher日誌配置,因為這些變數未通過OSGi配置進行配置。