Visão geral
Quando uma solicitação é enviada para seu aplicativo, um registro de solicitação é gravado automaticamente pelo App Engine. Durante o tratamento da solicitação, seu app também pode gravar registros de aplicativos. Nesta página, você aprenderá a gravar registros do aplicativo, como visualizar registros no console do Google Cloud e como entender os dados de registro de solicitação que o App Engine grava durante a solicitação.
Para informações sobre como fazer o download de dados de registro, consulte Visão geral das exportações de registros.
Comparação entre registros de solicitação e de aplicativo
Há duas categorias de dados de registros: de solicitação e de aplicativos. Os registros de solicitação são gravados automaticamente pelo App Engine para cada solicitação processada pelo seu aplicativo e contêm informações como o código do projeto, a versão HTTP e assim por diante. Para uma lista completa das propriedades disponíveis para os registros de solicitação, consulte RequestLogs. Consulte também a tabela de registros de solicitação para ver as descrições dos campos desses registros.
Cada registro de solicitação contém uma lista de registros de aplicativos (AppLogLine) associada a essa solicitação e retornada no método RequestLogs.getAppLogLines()
. Cada registro de aplicativo apresenta a hora em que o registro foi gravado, a mensagem e o nível do registro.
Como gravar registros de aplicativos
O SDK Java do Google App Engine permite que um desenvolvedor registre os seguintes níveis de gravidade:- SEVERE
- WARNING
- INFO
- CONFIG
- FINE
- FINER
- FINEST
Os níveis de registro INFO
, WARNING
e SEVERE
aparecem nos registros sem
configuração extra. Para adicionar outros níveis de geração de registros ao seu
aplicativo Java, você precisa adicionar as propriedades do sistema apropriadas ao arquivo
appengine-web.xml
do projeto e talvez seja necessário modificar o arquivo
logging.properties
para definir o nível de registro pretendido. Esses dois arquivos são
criados quando se inicia um projeto novo do App Engine Java usando o Maven. É possível encontrar esses arquivos nos
seguintes locais:
Para adicionar níveis de registro diferentes de INFO
, WARNING
ou SEVERE
,
edite o arquivo appengine-web.xml
para adicionar o seguinte
dentro das tags <appengine-web-app>
:
<system-properties>
<property name="java.util.logging.config.file" value="WEB-INF/logging.properties"/>
</system-properties>
O nível de registro padrão em logging.properties
é INFO
. Para alterar o nível de registro padrão
de todas as classes no seu app, edite
o arquivo logging.properties
. Por exemplo, é possível alterar .level = INFO
para .level = WARNING
.
No código do aplicativo, grave mensagens de registro usando a API java.util.logging.Logger. O exemplo abaixo grava uma mensagem de registro de informações:
import java.util.logging.Logger; //... public class MyClass { private static final Logger log = Logger.getLogger(MyClass.class.getName()); log.info("Your information log message."); //....
Quando o aplicativo é executado, o App Engine registra as mensagens e as disponibiliza no Explorador de registros.
Formato do URL de registro no console do Google Cloud
Veja a seguir um exemplo do formato do URL de registro no Console do Google Cloud:
https://console.cloud.google.com/logs?filters=request_id:000000db00ff00ff827e493472570001737e73686966746361727331000168656164000100
Como ler registros no Console
Para exibir registros gravados por aplicativos executados no ambiente padrão, use o Explorador de registros.
Um registro comum do App Engine contém dados no formato de registro combinado Apache, além de alguns campos especiais do App Engine, como mostra o registro de exemplo a seguir:
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=
Como entender os campos de registros de solicitação
A tabela abaixo lista os campos em ordem de ocorrência e uma descrição:
Ordem do campo | 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. Quase sempre é o caractere - . |
3 | Usuário | Não | Presente somente se o aplicativo usar a API Users e o usuário tiver feito login. Esse valor é a parte "apelido" da Conta do Google, por exemplo, se a Conta do Google for test@example.com , o apelido registrado nesse campo será test . |
4 | Carimbo de data/hora | Sim | Carimbo de data/hora da solicitação. Exemplo: [27/Jun/2014:09:11:47 -0700] |
5 | String de consulta de solicitação | Sim | Primeira linha da solicitação, contendo método, caminho e versão HTTP. Exemplo: GET / HTTP/1.1 |
6 | Código de status HTTP | Sim | Código de status de HTTP retornado. Exemplo: 200 . |
7 | Tamanho da resposta | Sim | Tamanho da resposta em bytes. Exemplo: 414 . |
8 | Caminho de indicação | Não | Se não houver indicação, o registro não terá caminho, somente - . Caminho do referenciador de exemplo: "http://www.example.com/index.html" . |
9 | User-agent | Sim | Identifica o navegador e o sistema operacional para o servidor da 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 host | Sim | O nome do host usado pelo cliente para conectar-se ao aplicativo App Engine. Exemplo : (1-dot-calm-sylph-602.appspot.com ) |
11 | Tempo | Sim | Tempo total em milissegundos gasto pelo App Engine na solicitação. Esta duração não inclui o tempo gasto entre o cliente e o servidor que executa a instância do seu aplicativo. Exemplo: ms=195 . |
12 | Milissegundos de CPU | Sim | Milissegundos de CPU necessários para cumprir a solicitação. Esta é a quantidade de milissegundos gasta pela CPU que de fato executa o código do seu aplicativo, usando como valor de referência um Intel x86 de 1,2 GHz. Se a CPU realmente utilizada for mais rápida do que o valor de referência, poderá haver mais milissegundos do que o tempo real definido acima. Exemplo: cpu_ms=42 |
13 | Código de saída | Não | Presente somente se a instância for desligada depois de receber a solicitação. No formato exit_code=XXX , em que XXX é um número de três dígitos correspondente ao motivo pelo qual a instância foi desligada. Os códigos de saída não são documentados, já que se destinam a ajudar o Google a detectar e corrigir problemas. |
14 | Custo estimado | Sim | OBSOLETO. Custo estimado de 1.000 solicitações como esta, em dólares americanos. Exemplo: cpm_usd=0.000046 |
15 | Nome da fila | Não | O nome da fila de tarefas usada. Presente apenas se o pedido usar uma fila de tarefas. Exemplo: queue_name=default |
16 | Nome da tarefa | Não | O nome da tarefa executada na fila de tarefas desta solicitação. Presente somente se a solicitação resultou na fila de uma tarefa. Exemplo: task_name=7287390692361099748 |
17 | Fila pendente | Não | Presente somente se uma solicitação demorar algum tempo em uma fila pendente. Se tiver vários desses nos seus registros ou se os valores forem altos, pode ser uma indicação de que você precisa de mais instâncias para atender seu tráfego. Exemplo: pending_ms=195 |
18 | Solicitação de carregamento | Não | Presente somente se a solicitação for de carregamento. Isso significa que uma instância precisou ser iniciada. De preferência, suas instâncias devem estar ativas e íntegras durante o máximo de tempo possível, atendendo a um grande número de solicitações antes de serem recicladas e precisarem ser iniciadas outra vez. Isso significa que você não deve ver muitos desses nos seus registros. Exemplo: loading_request=1 . |
19 | Instância | Sim | Identificador exclusivo da instância que gerencia a solicitação. Exemplo: instance=00c61b117cfeb66f973d7df1b7f4ae1f064d |
20 | Versão | Sim | A versão de lançamento atual do App Engine usada no App Engine de produção: |
Cotas e limites
Seu aplicativo é afetado pelas cotas relacionadas a registros abaixo:
- Dados de registros recuperados pela API Logs.
- Cota e retenção de ingestão de registros.
Cota para dados recuperados
Os primeiros 100 megabytes de dados de registros recuperados pelas chamadas da API Logs ao dia são gratuitos. Dados com mais de 100 megabytes resultam em cobranças de US$ 0,12/GB.
Cota de ingestão de registros
A geração de registros para aplicativos do App Engine é fornecida pela Observabilidade do Google Cloud. Consulte os Preços de observabilidade do Google Cloud para mais informações sobre custos e limites de geração de registros. Para armazenamento de longo prazo, é possível exportar registros da observabilidade do Google Cloud para o Cloud Storage, o BigQuery e o Pub/Sub.