Escrever o seu próprio registo em PHP: error_log e um ficheiro que consiga ler

Quando uma coisa falha só em produção, o melhor aliado é um registo que o próprio código escreve: uma linha com a hora, o que aconteceu e os dados que ajudam a perceber. Em PHP faz-se com a função error_log(), que escreve no registo de erros da pasta, ou com um ficheiro seu, que é mais fácil de ler e de limpar.

Duas maneiras, e quando usar cada uma

error_log('texto') Ficheiro seu
Onde escreve No registo de erros do PHP, o ficheiro error_log da pasta do script. Onde você disser, por exemplo numa pasta logs fora da pasta pública.
Mistura Fica no meio dos avisos e erros do PHP. Só tem o que você escreveu: lê-se de uma vez.
Limpar Cresce sem parar e há um por pasta. Pode ter um ficheiro por dia e apagar os antigos.
Quando Um aviso pontual, uma depuração rápida. O registo de uma aplicação ou de um cron.

Uma função pequena que serve

<?php
function registar(string $nivel, string $texto): void {
  $pasta = '/home/CONTA/logs-app';
  $ficheiro = $pasta . '/app-' . date('Y-m-d') . '.log';
  $linha = date('H:i:s') . ' [' . $nivel . '] ' . $texto . PHP_EOL;
  error_log($linha, 3, $ficheiro);
}

registar('INFO', 'Encomenda 123 gravada');
registar('ERRO', 'A API respondeu 502');

O segundo argumento 3 manda o error_log acrescentar ao ficheiro indicado em vez de usar o registo de erros, e por isso a quebra de linha (PHP_EOL) é sua. A hora sai no fuso que o PHP da pasta estiver a usar. Se quiser outro, fixe-o no início do script com date_default_timezone_set(), mas escolha um e mantenha-o.

Pô-lo a funcionar, passo a passo

1 Crie a pasta fora da pasta pública, por exemplo ao lado de public_html. Um registo dentro do site pode ser descarregado por qualquer pessoa que adivinhe o nome.
2 Confirme que o PHP escreve lá. A pasta tem de pertencer à conta e deixar escrever. Se a primeira linha nunca aparece, é quase sempre o caminho ou a permissão.
3 Escreva um registo de teste e abra o ficheiro no Gestor de Ficheiros. No Terminal, o tail -n 50 ficheiro.log mostra as últimas cinquenta linhas (o Terminal do cPanel).
4 Registe os pontos que importam: o início e o fim de uma tarefa, cada falha de uma chamada externa, cada decisão que o código tomou. Não registe tudo.
5 Apague os antigos. Com um ficheiro por dia, um cron semanal que apague os mais velhos evita que a pasta cresça sem fim. Veja os trabalhos agendados e os limites de ficheiros da conta.
Nunca escreva palavras-passe, chaves de API nem dados pessoais no registo. O ficheiro fica no disco, entra nas cópias de segurança e há quem o abra para ajudar. Registe o identificador (a encomenda 123), não o cartão, o contacto ou o corpo inteiro do pedido.
Para ver o motivo de uma página em branco, o registo de erros do PHP é o primeiro sítio (uma página em branco em PHP). O seu registo serve para o que o PHP não considera erro: uma encomenda que não gravou, uma API que respondeu mal, uma decisão do código.

O registo não é criado e não percebe porquê? Diga-nos o caminho que usou e a mensagem do error_log da pasta.

Abrir um pedido de suporte

VEJA TAMBÉM

Onde está o registo de erros do PHP

Uma página em branco em PHP: como ver o erro

Correr um script PHP num cron

json_decode dá null: o que está mal no JSON

PRODUTO RECOMENDADO

Alojamento de sites com cPanel

Domínio e SSL incluídos, cópias diárias e o painel que já conhece. desde 5.940,00 Kz/mês (plano de 3 anos, com cupão)

Ver planos
  • 0 Utilizadores acharam útil
Esta resposta foi útil?