AEM como um Cloud Service é uma plataforma para os clientes incluírem código personalizado para criar experiências exclusivas para sua base de clientes. Com isso em mente, o registro em log é uma função essencial para depurar e entender a execução do código no desenvolvimento local, e ambientes em nuvem, especialmente o AEM como ambientes Cloud Service Dev.
Os níveis de registro e registro AEM são gerenciados em arquivos de configuração armazenados como parte do projeto AEM no Git e implantados como parte do projeto AEM pelo Cloud Manager. Fazer logon AEM como um Cloud Service pode ser dividido em dois conjuntos lógicos:
O registro no nível do aplicativo AEM é realizado por três registros:
As solicitações HTTP fornecidas pelo cache do Dispatcher da camada de publicação ou pelo CDN upstream não são refletidas nesses logs.
AEM como um Cloud Service fornece acesso às instruções do log Java Os desenvolvedores de aplicativos para AEM devem seguir as práticas recomendadas gerais de registro em Java, registrando declarações pertinentes sobre a execução do código personalizado, nos seguintes níveis de registro:
ambiente AEM | Nível de registro | Descrição | Disponibilidade do demonstrativo de registro |
Desenvolvimento | DEPURAR |
Descreve o que está acontecendo no aplicativo. Quando o registro DEBUG estiver ativo, as declarações que fornecem uma imagem clara do que ocorre com as atividades, bem como quaisquer parâmetros chave que afetam o processamento, são registradas em log. |
|
Estágio | AVISO |
Descreve as condições que podem se tornar erros. Quando o registro em log do WARN estiver ativo, somente as declarações indicando os condicionais que estão se aproximando da subotimização serão registradas. |
|
Produção | ERRO |
Descreve as condições que indicam uma falha e que precisam ser resolvidas. Quando o registro em log ERROR está ativo, somente as declarações que indicam falhas são registradas em log. Declarações de log de ERROS indicam um problema grave que deve ser resolvido o mais rápido possível. |
|
Embora o registro em log do Java suporte vários outros níveis de granularidade de registro em log, AEM como um Cloud Service recomenda o uso dos três níveis descritos acima.
Os níveis de registro de AEM são definidos por tipo de ambiente pela configuração OSGi, que por sua vez são comprometidos com Git, e implantados pelo Gerenciador de nuvem para AEM como Cloud Service. Por isso, é melhor manter as declarações de log consistentes e bem conhecidas para tipos de ambientes, para garantir que os registros disponíveis via AEM como Cloud Service estejam disponíveis no nível de log ideal sem a necessidade de reimplantação do aplicativo com a configuração atualizada do nível de log.
Exemplo de saída de registro
22.06.2020 18:33:30.120 [cm-p12345-e6789-aem-author-86657cbb55-xrnzq] *ERROR* [qtp501076283-1809] io.prometheus.client.dropwizard.DropwizardExports Failed to get value from Gauge
22.06.2020 18:33:30.229 [cm-p12345-e6789-aem-author-86657cbb55-xrnzq] *INFO* [qtp501076283-1805] org.apache.sling.auth.core.impl.SlingAuthenticator getAnonymousResolver: Anonymous access not allowed by configuration - requesting credentials
22.06.2020 18:33:30.370 [cm-p12345-e6789-aem-author-86657cbb55-xrnzq] *INFO* [73.91.59.34 [1592850810364] GET /libs/granite/core/content/login.html HTTP/1.1] org.apache.sling.i18n.impl.JcrResourceBundle Finished loading 0 entries for 'en_US' (basename: <none>) in 4ms
22.06.2020 18:33:30.372 [cm-p12345-e6789-aem-author-86657cbb55-xrnzq] *INFO* [FelixLogListener] org.apache.sling.i18n Service [5126, [java.util.ResourceBundle]] ServiceEvent REGISTERED
22.06.2020 18:33:30.372 [cm-p12345-e6789-aem-author-86657cbb55-xrnzq] *WARN* [73.91.59.34 [1592850810364] GET /libs/granite/core/content/login.html HTTP/1.1] libs.granite.core.components.login.login$jsp j_reason param value 'unknown' cannot be mapped to a valid reason message: ignoring
Formato de registro
Data e hora | 29.04.2020 21:50:13.398 |
AEM como uma ID de nó Cloud Service | [cm-p1234-e5678-aem-author-59555cb5b8-q7l9s] |
Nível de registro | DEPURAR |
Thread | qtp2130572036-1472 |
classe Java | com.example.approval.workflow.impl.CustomApprovalWorkflow |
Mensagem de registro | Nenhum aprovador especificado, como padrão para [ grupo de usuários Creative Aprovvers ] |
AEM logs Java são definidos como configuração OSGi e, portanto, AEM específicos do público alvo como ambientes de Cloud Service usando pastas de modo de execução.
Configure o registro java para pacotes Java personalizados por meio de configurações OSGi para a fábrica do Sling LogManager. Há duas propriedades de configuração compatíveis:
Propriedade Configuração OSGi | Descrição |
---|---|
org.apache.sling.commons.log.names | Os pacotes Java para os quais coletar declarações de log. |
org.apache.sling.commons.log.level | O nível de log no qual os pacotes Java serão registrados, especificado por org.apache.sling.commons.log.names |
Alterar outras propriedades de configuração do LogManager OSGi pode resultar em problemas de disponibilidade no AEM como Cloud Service.
A seguir estão exemplos das configurações de registro recomendadas (usando o pacote Java de espaço reservado com.example
) para os três AEM como tipos de ambientes Cloud Service.
/apps/my-app/config/org.apache.sling.commons.log.LogManager.fatory.config-example.cfg.json
{
"org.apache.sling.commons.log.names": ["com.example"],
"org.apache.sling.commons.log.level": "debug"
}
/apps/my-app/config.stage/org.apache.sling.commons.log.LogManager.fatory.config-example.cfg.json
{
"org.apache.sling.commons.log.names": ["com.example"],
"org.apache.sling.commons.log.level": "warn"
}
/apps/my-app/config.prod/org.apache.sling.commons.log.LogManager.fatory.config-example.cfg.json
{
"org.apache.sling.commons.log.names": ["com.example"],
"org.apache.sling.commons.log.level": "error"
}
AEM como um Cloud Service de registro de solicitação HTTP fornece informações sobre as solicitações HTTP feitas para AEM suas respostas HTTP em tempo hábil. Esse log é útil para entender as Solicitações HTTP feitas para AEM e a ordem em que são processadas e respondidas.
A chave para entender esse log é mapear os pares de solicitação HTTP e resposta por suas IDs, denotadas pelo valor numérico entre colchetes. Observe que frequentemente as solicitações e suas respostas correspondentes têm outras solicitações HTTP e respostas interjetadas entre elas no log.
Exemplo de registro
29/Apr/2020:19:14:21 +0000 [137] -> POST /conf/global/settings/dam/adminui-extension/metadataprofile/ HTTP/1.1 [cm-p1234-e5678-aem-author-59555cb5b8-q7l9s]
...
29/Apr/2020:19:14:22 +0000 [139] -> GET /mnt/overlay/dam/gui/content/processingprofilepage/metadataprofiles/editor.html/conf/global/settings/dam/adminui-extension/metadataprofile/main HTTP/1.1 [cm-p1234-e5678-aem-author-59555cb5b8-q7l9s]
...
29/Apr/2020:19:14:21 +0000 [137] <- 201 text/html 111ms [cm-p1234-e5678-aem-author-59555cb5b8-q7l9s]
...
29/Apr/2020:19:14:22 +0000 [139] <- 200 text/html;charset=utf-8 637ms [cm-p1234-e5678-aem-author-59555cb5b8-q7l9s]
Formato de registro
Data e hora | 29/Abr/2020:19:14:21 +0000 |
ID do Par de Solicitação/Resposta | [137] |
Método HTTP | POST |
URL | /conf/global/settings/dam/adminui-extension/metadataprofile/ |
Protocolo | HTTP/1.1 |
AEM como uma ID de nó Cloud Service | [cm-p1234-e5678-aem-author-59555cb5b8-q7l9s] |
O registro de Solicitação HTTP AEM não é configurável em AEM como um Cloud Service.
AEM como registro de acesso HTTP Cloud Service mostra solicitações HTTP em ordem de tempo. Cada entrada de registro representa a Solicitação HTTP que acessa AEM.
Esse log é útil para entender rapidamente quais solicitações HTTP estão sendo feitas para AEM, se forem bem-sucedidas ao observar o código de status de resposta HTTP associado e quanto tempo a solicitação HTTP demorou para ser concluída. Esse log também pode ser útil para depurar uma atividade específica do usuário ao filtrar entradas de log por usuários.
Exemplo de saída de registro
cm-p1234-e26813-aem-author-59555cb5b8-8kgr2 - example@adobe.com 30/Apr/2020:17:37:14 +0000 "GET /libs/granite/ui/references/clientlibs/references.lc-5188e85840c529149e6cd29d94e74ad5-lc.min.css HTTP/1.1" 200 1141 "https://author-p10711-e26813.adobeaemcloud.com/mnt/overlay/dam/gui/content/assets/metadataeditor.external.html?item=/content/dam/en/images/example.jpeg&_charset_=utf8" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.122 Safari/537.36"
cm-p1234-e26813-aem-author-59555cb5b8-8kgr2 - example@adobe.com 30/Apr/2020:17:37:14 +0000 "GET /libs/dam/gui/coral/components/admin/customthumb/clientlibs.lc-60e4443805c37afa0c74b674b141f1df-lc.min.css HTTP/1.1" 200 809 "https://author-p10711-e26813.adobeaemcloud.com/mnt/overlay/dam/gui/content/assets/metadataeditor.external.html?item=/content/dam/en/images/example.jpeg&_charset_=utf8" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.122 Safari/537.36"
cm-p1234-e26813-aem-author-59555cb5b8-8kgr2 - example@adobe.com 30/Apr/2020:17:37:14 +0000 "GET /libs/dam/gui/coral/components/admin/metadataeditor/clientlibs/metadataeditor.lc-4a2226d8232f8b7ab27d24820b9ddd64-lc.min.js HTTP/1.1" 200 7965 "https://author-p10711-e26813.adobeaemcloud.com/mnt/overlay/dam/gui/content/assets/metadataeditor.external.html?item=/content/dam/en/images/example.jpeg&_charset_=utf8" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.122 Safari/537.36"
Formato de registro
AEM como uma ID de nó Cloud Service | cm-p1235-e2644-aem-author-59555cb5b8-8kgr2 |
Endereço IP do cliente | - |
Usuário | myuser@adobe.com |
Data e hora | 30/Abr/2020:17:37:14 +0000 |
Método HTTP | GET |
URL | /libs/granite/ui/references/clientlibs/references.lc-5188e85840c529149e6cd29d94e74ad5-lc.min.css |
Protocolo | HTTP/1.1 |
Status de resposta HTTP | 200 |
Tempo de solicitação HTTP em milissegundos | 1141 |
Referenciador | "https://author-p1234-e4444.adobeaemcloud.com/mnt/overlay/dam/gui/content/assets/metadataeditor.external.html?item=/content/dam/wknd/en/adventures/surf-camp-in-costa-rica/adobestock_266405335.jpeg&_charset_=utf8" |
Agente do usuário | "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, como Gecko) Chrome/81.0.4044.122 Safari/537.36" |
O registro de Acesso HTTP não é configurável em AEM como um Cloud Service.
AEM como Cloud Service, fornece três registros para os servidores Web Apache e a camada de despachante no Publish:
Observe que esses logs estão disponíveis somente para a camada de Publicação.
Esse conjunto de registros fornece insights sobre solicitações HTTP para o AEM como uma camada de publicação de Cloud Service antes que essas solicitações cheguem ao aplicativo AEM. Isso é importante para entender, já que, idealmente, a maioria das solicitações HTTP para os servidores da camada de publicação são atendidas por conteúdo armazenado em cache pelo Apache HTTPD Web Server e AEM Dispatcher, e nunca chegam ao aplicativo AEM. Portanto, não há declarações de log para essas solicitações nos registros AEM Java, Solicitação ou Acesso.
O log de acesso do Apache HTTP Web Server fornece instruções para cada solicitação HTTP que chega ao servidor Web/Dispatcher da camada de publicação. Observe que as solicitações que são atendidas a partir de um CDN upstream não são refletidas nesses logs.
Consulte as informações sobre o formato do log de erros na documentação do cache oficial.
Exemplo de saída de registro
cm-p1234-e5678-aem-publish-b86c6b466-qpfvp - - 17/Jul/2020:09:14:41 +0000 "GET /etc.clientlibs/wknd/clientlibs/clientlib-site/resources/images/favicons/favicon-32.png HTTP/1.1" 200 715 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:78.0) Gecko/20100101 Firefox/78.0"
cm-p1234-e5678-aem-publish-b86c6b466-qpfvp - - 17/Jul/2020:09:14:41 +0000 "GET /etc.clientlibs/wknd/clientlibs/clientlib-site/resources/images/favicons/favicon-512.png HTTP/1.1" 200 9631 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:78.0) Gecko/20100101 Firefox/78.0"
cm-p1234-e5678-aem-publish-b86c6b466-qpfvp - - 17/Jul/2020:09:14:42 +0000 "GET /etc.clientlibs/wknd/clientlibs/clientlib-site/resources/images/country-flags/US.svg HTTP/1.1" 200 810 "https://publish-p6902-e30226.adobeaemcloud.com/content/wknd/us/en.html" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:78.0) Gecko/20100101 Firefox/78.0"
Formato de registro
AEM como uma ID de nó do serviço Cloud | cm-p1234-e26813-aem-publish-5c787687c-lqlxr |
Endereço IP do cliente | - |
Usuário | - |
Data e hora | 01/maio/2020:00:09:46 +0000 |
Método HTTP | GET |
URL | /content/example.html |
Protocolo | HTTP/1.1 |
Status da resposta HTTP | 200 |
Tamanho | 310 |
Referenciador | - |
Agente do usuário | "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, como Gecko) Chrome/81.0.4044.122 Safari/537.36" |
Este registro não é configurável em AEM como um Cloud Service.
O log de erros do Apache HTTP Web Server fornece instruções para cada erro no servidor Web/Dispatcher da camada de publicação.
Consulte as informações sobre o formato do log de erros na documentação do cache oficial.
Exemplo de saída de registro
Fri Jul 17 02:19:48.093820 2020 [mpm_worker:notice] [pid 1:tid 140272153361288] [cm-p1234-e30226-aem-publish-b86c6b466-b9427] AH00292: Apache/2.4.43 (Unix) Communique/4.3.4-20200424 mod_qos/11.63 configured -- resuming normal operations
Fri Jul 17 02:19:48.093874 2020 [core:notice] [pid 1:tid 140272153361288] [cm-p1234-e30226-aem-publish-b86c6b466-b9427] AH00094: Command line: 'httpd -d /etc/httpd -f /etc/httpd/conf/httpd.conf -D FOREGROUND -D ENVIRONMENT_PROD'
Fri Jul 17 02:29:34.517189 2020 [mpm_worker:notice] [pid 1:tid 140293638175624] [cm-p1234-e30226-aem-publish-b496f64bf-5vckp] AH00295: caught SIGTERM, shutting down
Formato de registro
Data e hora | 17 de julho de 2020:16:42.608913 2020 |
Nível do evento | [mpm_worker:notice] |
ID do processo | [pid 1:tid 140715149343624] |
Nome do pod | [cm-p1234-e56789-aem-publish-b86c6b466-qpfvp] |
Mensagem | AH00094: Linha de comando: 'httpd -d /etc/httpd -f /etc/httpd/conf/httpd.conf -D FOREGROUND -D |
Os níveis de log mod_rewrite são definidos pela variável REWRITE_LOG_LEVEL no arquivo conf.d/variables/global.var
.
Ele pode ser definido como Erro, Aviso, Informações, Depuração e Trace1 - Trace8, com um valor padrão de Aviso. Para depurar RewriteRules, é recomendável elevar o nível de log para Trace2.
Consulte a documentação do módulo mod_rewrite para obter mais informações.
Para definir o nível de log por ambiente, use a ramificação condicional apropriada no arquivo global.var, conforme descrito abaixo:
Define REWRITE_LOG_LEVEL Debug
<IfDefine ENVIRONMENT_STAGE>
...
Define REWRITE_LOG_LEVEL Warn
...
</IfDefine>
<IfDefine ENVIRONMENT_PROD>
...
Define REWRITE_LOG_LEVEL Error
...
</IfDefine>
Exemplo
[17/Jul/2020:23:48:06 +0000] [I] [cm-p12904-e25628-aem-publish-6c5f7c9dbd-mzcvr] "GET /content/wknd/us/en/adventures.html" - 475ms [publishfarm/0] [action miss] "publish-p12904-e25628.adobeaemcloud.com"
[17/Jul/2020:23:48:07 +0000] [I] [cm-p12904-e25628-aem-publish-6c5f7c9dbd-mzcvr] "GET /content/wknd/us/en/adventures/climbing-new-zealand/_jcr_content/root/responsivegrid/carousel/item_1571266094599.coreimg.jpeg/1473680817282/sport-climbing.jpeg" 302 10ms [publishfarm/0] [action none] "publish-p12904-e25628.adobeaemcloud.com"
[17/Jul/2020:23:48:07 +0000] [I] [cm-p12904-e25628-aem-publish-6c5f7c9dbd-mzcvr] "GET /content/wknd/us/en/adventures/ski-touring-mont-blanc/_jcr_content/root/responsivegrid/carousel/item_1571168419252.coreimg.jpeg/1572047288089/adobestock-238230356.jpeg" 302 11ms [publishfarm/0] [action none] "publish-p12904-e25628.adobeaemcloud.com"
Formato de registro
Data e hora | [17/jul/2020:23:48:16 +0000] |
Nome do pod | [cm-p12904-e25628-aem-publish-6c5f7c9dbd-mzcvr] |
Protocolo | GET |
URL | /content/experience-fragments/wknd/language-masters/en/contributors/sofia-sjoeberg/master/_jcr_content/root/responsivegrid/image.coreimg.100.500.jpeg/1572236359031/ayo-ogunseinde-237739.jpeg |
Código de status de resposta do Dispatcher | /content/experience-fragments/wknd/language-masters/en/contributors/sofia-sjoeberg/master/_jcr_content/root/responsivegrid/image.coreimg.100.500.jpeg/1572236359031/ayo-ogunseinde-237739.jpeg |
Duração | 1949 ms |
Exploração | [publishfarm/0] |
Status do cache | [falha de ação] |
Host | "publish-p12904-e25628.adobeaemcloud.com" |
Os níveis de log do dispatcher são definidos pela variável DISP_LOG_LEVEL no arquivo conf.d/variables/global.var
.
Ele pode ser definido como Erro, Aviso, Informações, Depuração e Trace1, com um valor padrão de Aviso.
Embora o registro do Dispatcher suporte vários outros níveis de granularidade de registro, o AEM como Cloud Service recomenda o uso dos níveis descritos abaixo.
Para definir o nível de log por ambiente, use a ramificação condicional apropriada no arquivo global.var
, conforme descrito abaixo:
Define DISP_LOG_LEVEL Debug
<IfDefine ENVIRONMENT_STAGE>
...
Define DISP_LOG_LEVEL Warn
...
</IfDefine>
<IfDefine ENVIRONMENT_PROD>
...
Define DISP_LOG_LEVEL Error
...
</IfDefine>
AEM como um Cloud Service para os serviços em nuvem podem ser acessados por meio do download pela interface do Gerenciador de nuvem ou do direcionamento de registros na linha de comando usando a interface de linha de comando do Adobe I/O. Para obter mais informações, consulte a documentação de registro do Cloud Manager.
AEM como Cloud Service SDK fornece arquivos de registro para suportar o desenvolvimento local.
AEM logs estão localizados na pasta crx-quickstart/logs
, onde os seguintes logs podem ser exibidos:
error.log
request.log
access.log
Os registros de camada do Apache, incluindo o dispatcher, estão no container Docker que contém o Dispatcher. Consulte a documentação do Dispatcher para obter informações sobre como start o Dispatcher.
Para recuperar os logs:
docker ps
para lista dos containerdocker exec -it <container> /bin/sh
", onde <container>
é a id do container do dispatcher da etapa anterior/mnt/var/www/html
/etc/httpd/logs
httpd_access.log
httpd_error.log
dispatcher.log
Os registros também são impressos diretamente na saída do terminal. Na maioria das vezes, esses registros devem ser DEBUG, o que pode ser feito transmitindo o nível de Depuração como parâmetro ao executar o Docker. Por exemplo:
DISP_LOG_LEVEL=Debug ./bin/docker_run.sh out docker.for.mac.localhost:4503 8080
Em circunstâncias excepcionais, os níveis de log precisam ser alterados para registrar uma granularidade mais fina em ambientes de estágio ou produção.
Embora isso seja possível, requer alterações nos níveis de log nos arquivos de configuração no Git de Aviso e Erro para Depuração e uma implantação para AEM como Cloud Service para registrar essas alterações de configuração nos ambientes.
Dependendo do tráfego e da quantidade de declarações de log gravadas pela Depuração, isso pode resultar em um impacto negativo no desempenho do ambiente, portanto, recomenda-se que as alterações nos níveis de depuração de Stage e Production sejam:
Os clientes que têm contas Splunk podem solicitar, por meio do ticket de suporte ao cliente, que seus registros de Cloud Service AEM sejam encaminhados ao índice apropriado. Os dados de registro equivalem ao que está disponível por meio dos downloads de log do Cloud Manager, mas os clientes podem achar conveniente aproveitar os recursos do query disponíveis no Splunk product.
A largura de banda de rede associada aos logs enviados ao Splunk é considerada parte do uso de E/S de rede do cliente.
Na solicitação de suporte, os clientes devem indicar:
As propriedades acima devem ser especificadas para cada combinação de tipo de programa/ambiente relevante. Por exemplo, se um cliente deseja ambientes de desenvolvimento, armazenamento temporário e produção, ele deve fornecer três conjuntos de informações, conforme indicado abaixo.
O encaminhamento de segmentos para ambientes de programas sandbox não é suportado.
Abaixo você encontrará um exemplo de solicitação de suporte ao cliente:
Programa 123, Production Env
splunk-hec-ext.acme.com
Programa 123, Stage Env
splunk-hec-ext.acme.com
Programa 123, Envs. Desenvolvedor
splunk-hec-ext.acme.com
Pode ser suficiente que o mesmo índice Splunk seja usado para cada ambiente, nesse caso, o campo aem_env_type
pode ser usado para diferenciar com base nos valores dev, stage e prod. Se houver vários ambientes dev, o campo aem_env_id
também poderá ser usado. Algumas organizações podem escolher um índice separado para os registros de ambientes de produção se o índice associado limitar o acesso a um conjunto reduzido de usuários do Splunk.
Esta é uma entrada de registro de exemplo:
aem_env_id: 1242
aem_env_type: dev
aem_program_id: 12314
aem_tier: author
file_path: /var/log/aem/error.log
host: 172.34.200.12
level: INFO
msg: [FelixLogListener] com.adobe.granite.repository Service [5091, [org.apache.jackrabbit.oak.api.jmx.SessionMBean]] ServiceEvent REGISTERED
orig_time: 16.07.2020 08:35:32.346
pod_name: aemloggingall-aem-author-77797d55d4-74zvt
splunk_customer: true