Escrever o seu próprio registro em PHP: error_log e um arquivo que consiga ler

PHP e ProgramaçãoErros e logs do PHP··· 1.206 visualizações· 3 min de leitura

Quando uma coisa falha só em produção, o melhor aliado é um registro 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 log de erros da pasta, ou com um arquivo seu, que é mais fácil de ler e de limpar.

Duas maneiras, e quando usar cada uma

error_log('texto') Arquivo seu
Onde escreve No log de erros do PHP, o arquivo 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 arquivo por dia e apagar os antigos.
Quando Um aviso pontual, uma depuração rápida. O registro de uma aplicação ou de um cron.

Uma função pequena que serve

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

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

O segundo argumento 3 manda o error_log acrescentar ao arquivo indicado em vez de usar o log de erros, e por isso a quebra de linha (PHP_EOL) é sua. A hora sai no fuso que o PHP da pasta estiver usando. 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 registro dentro do site pode ser baixado 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 registro de teste e abra o arquivo no Gerenciador de Arquivos. No Terminal, o tail -n 50 arquivo.log mostra as últimas cinquenta linhas (o Terminal do cPanel).
4 Registre 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 registre tudo.
5 Apague os antigos. Com um arquivo 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 arquivos da conta.
Nunca escreva senhas, chaves de API nem dados pessoais no registro. O arquivo fica no disco, entra nos backups e há quem o abra para ajudar. Registre o identificador (o pedido 123), não o cartão, o contato ou o corpo inteiro do pedido.
Para ver o motivo de uma página em branco, o log de erros do PHP é o primeiro lugar (uma página em branco em PHP). O seu registro serve para o que o PHP não considera erro: um pedido que não gravou, uma API que respondeu mal, uma decisão do código.

O registro não é criado e não percebe por quê? 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 log de erros do PHP

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

Rodar um script PHP num cron

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

PRODUTO RECOMENDADO

Hospedagem de sites com cPanel

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

Ver planos
Esta resposta foi útil? Sua resposta nos ajuda a melhorar este artigo.