Ler e escrever registos de aplicações

Vista geral

Quando é enviado um pedido para a sua app, o App Engine escreve automaticamente um registo de pedidos. Durante o processamento do pedido, a sua app também pode escrever registos de aplicações. Nesta página, vai aprender a escrever registos de aplicações a partir da sua aplicação, como ver o registo naGoogle Cloud consola e como compreender os dados do registo de pedidos que o App Engine escreve durante o pedido.

Para obter informações sobre a transferência de dados de registo, consulte o artigo Vista geral das exportações de registos.

Registos de pedidos vs. registos de aplicações

Existem duas categorias de dados de registo: registos de pedidos e registos de aplicações. O App Engine escreve automaticamente um registo de pedidos para cada pedido processado pela sua app, e contém informações como o ID do projeto, a versão HTTP, etc.

Escrever registos de aplicações

Escreve registos através da API PHP de registos quando chama a função PHP incorporada syslog(). Por exemplo:

if (authorizedUser()) {
  echo '<p>Welcome authorized user</p>';
  syslog(LOG_INFO, 'Authorized access');
} else {
  echo 'Go away unauthorized user<p />';
  syslog(LOG_WARNING, "Unauthorized access");
}

Não precisa de ligar para openlog() nem para closelog() antes de escrever para syslog. As chamadas a estas funções são ignoradas.

Formato do URL de registo na Google Cloud consola

Veja o seguinte URL de exemplo para ver um exemplo do formato do URL de registo na Google Cloud consola:

https://console.cloud.google.com/logs?filters=request_id:000000db00ff00ff827e493472570001737e73686966746361727331000168656164000100

Ler registos na consola

Para ver os registos escritos por apps em execução no ambiente padrão, use o Explorador de registos.

Um registo típico do App Engine contém dados no formato de registo combinado do Apache, juntamente com alguns campos especiais do App Engine, conforme mostrado no seguinte registo de exemplo:

192.0.2.0 - test [27/Jun/2014:09:11:47 -0700] "GET / HTTP/1.1" 200 414
"http://www.example.com/index.html"
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36"
"1-dot-calm-sylph-602.appspot.com" ms=195 cpu_ms=42 cpm_usd=0.000046
loading_request=1 instance=00c61b117cfeb66f973d7df1b7f4ae1f064d app_engine_release=

Compreender os campos do registo de pedidos

A tabela seguinte apresenta os campos por ordem de ocorrência, juntamente com uma descrição:

Ordem dos campos Nome do campo Sempre presente? Descrição
1 Endereço do cliente Sim Endereço IP do cliente. Exemplo: 192.0.2.0
2 Identidade RFC 1413 Não Identidade RFC 1413 do cliente. Este é quase sempre o caráter -
3 Utilizador Não Presente apenas se a app usar a API Users e o utilizador tiver sessão iniciada. Este valor é a parte "pseudónimo" da Conta Google. Por exemplo, se a Conta Google for test@example.com, o pseudónimo com sessão iniciada neste campo é test.
4 Indicação de tempo Sim Data/hora do pedido. Exemplo: [27/Jun/2014:09:11:47 -0700]
5 String de consulta do pedido Sim Primeira linha do pedido, que contém o método, o caminho e a versão HTTP. Exemplo: GET / HTTP/1.1
6 Código de estado HTTP Sim Código de estado HTTP devolvido. Exemplo: 200
7 Tamanho da resposta Sim Tamanho da resposta em bytes. Exemplo: 414
8 Caminho do referenciador Não Se não existir um referenciador, o registo não contém nenhum caminho, mas apenas -. Exemplo de caminho de referenciador: "http://www.example.com/index.html".
9 Agente do utilizador Sim Identifica o navegador e o sistema operativo para o servidor Web. Exemplo: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36
10 Nome do anfitrião Sim O nome de anfitrião usado pelo cliente para estabelecer ligação à aplicação do App Engine. Exemplo : (1-dot-calm-sylph-602.appspot.com)
11 Tempo total Sim O tempo total de relógio em milissegundos gasto pelo App Engine no pedido. Esta duração não inclui o tempo gasto entre o cliente e o servidor que executa a instância da sua aplicação. Exemplo: ms=195.
12 Milissegundos de CPU Sim Milissegundos de CPU necessários para satisfazer o pedido. Este é o número de milissegundos que a CPU gasta a executar o código da sua aplicação, expresso em termos de uma CPU Intel x86 de 1,2 GHz de referência. Se a CPU realmente usada for mais rápida do que a base, os milissegundos da CPU podem ser superiores ao tempo de relógio real definido acima. Exemplo: cpu_ms=42
13 Código de saída Não Só está presente se a instância tiver sido encerrada após receber o pedido. No formato exit_code=XXX, em que XXX é um número de 3 dígitos correspondente ao motivo pelo qual a instância foi encerrada. Os códigos de saída não estão documentados, uma vez que se destinam principalmente a ajudar a Google a detetar e corrigir problemas.
14 Custo estimado Sim DESCONTINUADO. Custo estimado de 1000 pedidos como este, em USD. Exemplo: cpm_usd=0.000046
15 Nome da fila Não O nome da fila de tarefas usada. Apenas presente se o pedido tiver usado uma fila de tarefas. Exemplo: queue_name=default
16 Nome da tarefa Não O nome da tarefa executada na fila de tarefas para esta solicitação. Só está presente se o pedido tiver resultado na colocação de uma tarefa em fila. Exemplo: task_name=7287390692361099748
17 Fila pendente Não Só está presente se um pedido tiver passado algum tempo numa fila pendente. Se existirem muitos destes no seu registo e/ou os valores forem elevados, pode ser um indicador de que precisa de mais instâncias para publicar o seu tráfego. Exemplo: pending_ms=195
18 A carregar pedido Não Apenas presente se o pedido for um pedido de carregamento. Isto significa que teve de ser iniciada uma instância. Idealmente, as suas instâncias devem estar em funcionamento e em bom estado durante o maior tempo possível, publicando um grande número de pedidos antes de serem recicladas e terem de ser iniciadas novamente. Isto significa que não deve ver demasiados destes erros nos seus registos. Exemplo: loading_request=1.
19 Instância Sim Identificador exclusivo da instância que processa o pedido. Exemplo: instance=00c61b117cfeb66f973d7df1b7f4ae1f064d
20 Versão Sim A versão de lançamento atual do App Engine usada no App Engine de produção:

Quotas e limites

A sua aplicação é afetada pelas seguintes quotas relacionadas com registos:

  • Regista os dados obtidos através da API Logs.
  • Limite de carregamento e retenção de registos.

Quota para dados obtidos

Os primeiros 100 megabytes de dados de registos obtidos por dia através das chamadas da API Logs são gratuitos. Os dados superiores a 100 megabytes resultam em custos de 0,12 USD/GB.

Limite de carregamento de registos

O registo para apps do App Engine é fornecido pelo Google Cloud Observability. Consulte os preços da observabilidade do Google Cloud para ver mais informações sobre os custos e os limites de registo. Para o armazenamento a longo prazo de registos, pode exportar registos do Google Cloud Observability para o Cloud Storage, o BigQuery e o Pub/Sub.