O runtime PHP do Function Compute oferece duas formas de gravar logs no código da função: o módulo logger integrado e as funções padrão de saída do PHP. Este tópico explica como usar cada abordagem e como visualizar os logs após a execução da função.
Imprimir logs
Usar o logger integrado
Em funções com runtime integrado, acesse o logger pela variável global $GLOBALS['fcLogger']. O sistema encaminha automaticamente os logs para o Logstore do Simple Log Service (SLS) especificado na criação do serviço.
Cada entrada de log segue esta estrutura:
YYYY-MM-DD HH:MM:SS <requestId> [LEVEL] message
Exemplo:
2024-01-04 10:50:44 1-659xxxxx-16cxxxxx-39659xxxxxx [INFO] hello world
O logger integrado adiciona automaticamente carimbo de data/hora, ID da solicitação e nível de log a cada entrada. As funções padrão de saída do PHP (descritas na próxima seção) não incluem esses metadados.
O exemplo a seguir imprime dois logs no nível INFO padrão e eleva o nível para CRITICAL (500). Isso suprime os logs INFO subsequentes:
<?php
function handler($event, $context) {
$logger = $GLOBALS['fcLogger'];
$logger->info('hello world');
$logger->critical('world hello');
$logger->setLevel(500);
$logger->info('hello world 2'); // suppressed -- below CRITICAL threshold
$logger->critical('world hello 2');
return 'hello world';
}
Saída esperada:
FunctionCompute php7.2 runtime inited.
FC Invoke Start RequestId: 1-659xxxxx-16cxxxxx-39659xxxxxx
2024-01-04 10:50:44 1-659xxxxx-16cxxxxx-39659xxxxxx [INFO] hello world
2024-01-04 10:50:44 1-659xxxxx-16cxxxxx-39659xxxxxx [CRITICAL] world hello
2024-01-04 10:50:44 1-659xxxxx-16cxxxxx-39659xxxxxx [CRITICAL] world hello 2
\nFC Invoke End RequestId: 1-659xxxxx-16cxxxxx-39659xxxxxx
A mensagem hello world 2 não aparece porque, após a chamada setLevel(500), o logger emite apenas mensagens com nível CRITICAL (500) ou superior.
Níveis de log
Use $logger->setLevel(<numeric_level>) para controlar quais mensagens são emitidas. O sistema descarta mensagens abaixo do nível ativo. O nível padrão é INFO (200).
|
Nível de log |
Valor numérico |
Interface |
Quando usar |
|
EMERGENCY |
600 |
|
Sistema inutilizável; requer ação imediata |
|
ALERT |
550 |
|
Componente crítico inoperante; exige intervenção urgente |
|
CRITICAL |
500 |
|
Falha grave ocorrida; demanda atenção urgente |
|
ERROR |
400 |
|
Operação falhou e não pôde ser concluída |
|
WARNING |
300 |
|
Situação inesperada, mas a execução continuou |
|
NOTICE |
250 |
|
Evento normal, porém significativo, que vale a pena rastrear |
|
INFO |
200 |
|
Mensagens operacionais gerais; nível padrão |
|
DEBUG |
100 |
|
Informações detalhadas de diagnóstico para desenvolvimento e solução de problemas |
Usar funções padrão de saída do PHP
Se a função não utilizar um runtime integrado, use as funções padrão de saída do PHP. Diferentemente do logger integrado, essa abordagem imprime apenas o conteúdo bruto, sem adicionar carimbo de data/hora, ID da solicitação ou nível de log.
<?php
function handler($event, $context) {
var_dump("abcd");
echo "abcd 2\n";
fwrite(STDERR, "error\n");
return 'hello world';
}
Saída esperada:
FunctionCompute php7.2 runtime inited.
FC Invoke Start RequestId: 1-659xxxxx-165xxxxx-455a04xxxxxx
/code/index.php:4:
string(4) "abcd"
abcd 2
error
\nFC Invoke End RequestId: 1-659xxxxx-165xxxxx-455a04xxxxxx
Qualquer função que escreva na saída padrão ou no erro padrão opera da mesma maneira.
Visualizar logs
Após a execução da função, abra-a no console do Function Compute e acesse a aba Logs na página Function Details. Para filtrar e consultar logs entre diferentes invocações, consulte Visualizar logs de invocação.