I registri fungono da fronte per il debug AEM applicazioni in AEM as a Cloud Service, ma dipendono dalla registrazione adeguata nell’applicazione AEM distribuita.
Tutte le attività di registro per il servizio AEM di un determinato ambiente (Author, Publish/Publish Dispatcher) vengono consolidate in un singolo file di registro, anche se i diversi pod all’interno di tale servizio generano le istruzioni di registro.
Gli ID del contenitore vengono forniti in ogni istruzione di registro e consentono di filtrare o raggruppare le istruzioni di registro. Gli ID del contenitore sono nel formato di:
cm-p<PROGRAM ID>-e<ENVIRONMENT ID>-aem-<author|publish>-<POD NAME>
cm-p12345-e56789-aem-author-abcdefabde-98765
AEM come Cloud Services non supporta i file di registro personalizzati, ma supporta la registrazione personalizzata.
Per rendere disponibili i registri Java in AEM as a Cloud Service (tramite Cloud Manager o Adobe I/O CLI), le istruzioni di registro personalizzate devono essere scritte come error.log
. Registri scritti in registri personalizzati con nome, ad esempio example.log
, non sarà accessibile da AEM as a Cloud Service.
I registri possono essere scritti in error.log
utilizzo di una proprietà di configurazione OSGi Sling LogManager nella org.apache.sling.commons.log.LogManager.factory.config~example.cfg.json
file.
{
...
"org.apache.sling.commons.log.file": "logs/error.log"
...
}
I servizi Author e Publish di AEM forniscono AEM log del server di runtime:
aemerror
è il registro degli errori Java (disponibile in /crx-quickstart/logs/error.log
sull’avvio rapido locale dell’SDK AEM). Di seguito sono riportati i livelli di registro consigliati per i logger personalizzati per tipo di ambiente:
DEBUG
WARN
ERROR
aemaccess
elenca le richieste HTTP al servizio AEM con i relativi dettagliaemrequest
elenca le richieste HTTP effettuate al servizio AEM e la relativa risposta HTTPSolo AEM Publish Dispatcher fornisce i registri del server web Apache e del Dispatcher, poiché questi aspetti esistono solo nel livello di pubblicazione AEM e non nel livello di authoring AEM.
httpdaccess
elenca le richieste HTTP effettuate al server Web/Dispatcher Apache del servizio AEM.httperror
elenca i messaggi di registro dal server web Apache e aiuto con il debug dei moduli Apache supportati, come mod_rewrite
.
DEBUG
WARN
ERROR
aemdispatcher
elenca i messaggi di registro dai moduli di Dispatcher, inclusi i filtri e il servizio dai messaggi di cache.
DEBUG
WARN
ERROR
Adobe Cloud Manager consente il download dei registri, per giorno, tramite l’azione Download Logs di un ambiente.
Questi registri possono essere scaricati ed ispezionati tramite qualsiasi strumento di analisi dei log.
Adobe Cloud Manager supporta l’accesso AEM registri as a Cloud Service tramite il Adobe I/O CLI con Plug-in di Cloud Manager per Adobe I/O CLI.
Primo, configurare l’Adobe I/O con il plug-in Cloud Manager.
Assicurati che l’ID del programma e l’ID dell’ambiente pertinenti siano stati identificati e utilizza list-available-log-options per elencare le opzioni di registro utilizzate per tail o scaricare registri.
$ 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/O CLI offre la possibilità di visualizzare i registri in tempo reale da AEM as a Cloud Service utilizzando tail-logs comando. Il tail è utile per guardare l’attività di log in tempo reale mentre le azioni vengono eseguite nell’ambiente AEM as a Cloud Service.
$ aio config:set cloudmanager_programid <PROGRAM ID>
$ aio cloudmanager:tail-logs <ENVIRONMENT ID> <SERVICE> <NAME>
Altri strumenti della riga di comando, ad esempio grep
può essere utilizzato insieme a tail-logs
per isolare le dichiarazioni di interesse del registro, ad esempio:
$ aio cloudmanager:tail-logs 12345 author | grep com.example.MySlingModel
… visualizza solo le istruzioni di registro generate da com.example.MySlingModel
o contengono quella stringa.
Adobe I/O CLI offre la possibilità di scaricare i log da AEM as a Cloud Service utilizzando download-logs). Questo fornisce lo stesso risultato finale del download dei registri dall’interfaccia utente web di Cloud Manager, con la differenza che il download-logs
consolida i log in giorni, in base al numero di giorni di log richiesti.
$ aio config:set cloudmanager_programid <PROGRAM ID>
$ aio cloudmanager:download-logs <ENVIRONMENT> <SERVICE> <NAME> <DAYS>
Gli accessi AEM as a Cloud Service contengono più pod che scrivono istruzioni di registro. Poiché più istanze AEM scrivono nello stesso file di registro, è importante comprendere come analizzare e ridurre il rumore durante il debug. Per spiegare: aemerror
viene utilizzato lo snippet di registro:
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
Utilizzando gli ID Pod, il punto dati dopo la data e l’ora, i registri possono essere raggruppati per Pod, o AEM’istanza all’interno del servizio, facilitando il tracciamento e la comprensione dell’esecuzione del codice.
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.
Le linee guida generali dell’Adobe sui livelli di log per AEM ambiente as a Cloud Service sono:
DEBUG
DEBUG
WARN
ERROR
L'impostazione del livello di log più appropriato per ogni tipo di ambiente è con AEM as a Cloud Service, i livelli di log vengono mantenuti nel codice
…e quindi, è necessario un intervento per cambiare.
Un'alternativa all'impostazione di livelli di log Java statici ben noti per ogni ambiente è quella di utilizzare AEM come Cloud Service variabili specifiche dell'ambiente per parametrizzare i livelli di registro, consentendo la modifica dinamica dei valori tramite il Adobe I/O CLI con il plug-in Cloud Manager.
Questo richiede l'aggiornamento delle configurazioni OSGi per utilizzare i segnaposto variabili specifiche dell'ambiente. Valori predefiniti per i livelli di log deve essere impostato come per Raccomandazioni Adobi. Esempio:
/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]"
...
}
Questo approccio presenta aspetti negativi che devono essere presi in considerazione:
Le variabili specifiche per l’ambiente non funzionano per le configurazioni del server web Apache o del registro del Dispatcher, in quanto non sono configurate tramite la configurazione OSGi.