
PHP: http://www.php.net/
Semana passada, estive fazendo num pequeno site, uma área de login. Foi então que fiz uma funçãozinha no PHP que gera logs diários dos eventos ocorridos desde o login até o logoff, como por exemplo, ações tomadas pelos usuários na parte administrativa.
Abaixo, vocês poderão conferir o código que utilizei, logicamente adaptado para que fosse publicado aqui.
Os arquivos de log são gerados baseado no dia em que se encontra. Como os arquivos estão em formato .txt, utilizei um prefixo no arquivo, para que o acesso não seja tão óbvio por pessoas desautorizadas.
A função armazena no arquivo a hora da ocorrência, seguido pelo IP da máquina do cliente e a mensagem definida por você.
Vamos então seguir para o código:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <?php date_default_timezone_set('America/Sao_Paulo'); function Logger($msg){ $data = date("d-m-y"); $hora = date("H:i:s"); $ip = $_SERVER['REMOTE_ADDR']; //Nome do arquivo: $arquivo = "Logger_$data.txt"; //Texto a ser impresso no log: $texto = "[$hora][$ip]> $msg \n"; $manipular = fopen("$arquivo", "a+b"); fwrite($manipular, $texto); fclose($manipular); } ?> |
Salve o arquivo acima como logger.php
Na linha 3 estou declarando o timezone para São Paulo, mesmo estando no Rio de Janeiro, o horário é o mesmo. Isso serve para configurar a data para minha localidade, já que no meu caso, o servidor se encontra em outro fuso horário.
Nas linhas 7, 8 e 9 estou declarando as variáveis de data, hora e ip da máquina que gerou o log (cliente).
Na linha 12 está o nome do arquivo. Será algo do tipo Logger_19-06-2009.txt (dia-mês-ano). Caso deseje armazenar o log em uma pasta já existente, altere a linha para:
$arquivo = “minhapasta/Logger_$data.txt”;
Na linha 17 está a função de abertura do arquivo. Passando o “a+” como parâmetro, apenas nos dias que tiver alguma coisa para ser inserida no log, é que o arquivo será criado ou se já existir, escreverá o registro no fim do arquivo. O parâmetro “b” serve para questões de portabilidade ( inserção recomendado no manual do php )
As linhas 18 e 19 manipulam e fecham o arquivo definido na linha 12.
Agora vamos para o código onde vamos utilizar nossa função:
1 2 3 4 5 6 7 8 9 | <?php include "logger.php"; Logger("Testando a função logger !"); Logger("Como você pode ver, estou logando uma informação !"); Logger("Teste 1, Teste 2, Teste 3!"); ?> |
Salve o arquivo acima como teste.php na mesma página onde se encontra o logger.php.
Pronto. O Script acima gera 3 saídas consecutivas no seu arquivo de log.
Conferindo o resultado:
Nome do arquivo gerado:
Logger_19-06-09.txt
Conteúdo:
[21:57:36][201.7.xxx.xxx]> Testando a função logger !
[21:57:36][201.7.xxx.xxx]> Como você pode ver, estou logando uma informação !
[21:57:36][201.7.xxx.xxx]> Teste 1, Teste 2, Teste 3!
Bom, espero que o script sirva para mais alguém.



#1 by Nataniel Santos on 23/07/2009 - 1:28
Show de bola esse seu código, o unico q encontrei e funcionou 100%, agora vem a dúvida. Gostaria de colocar as seguintes msgs. [21:57:36][201.7.xxx.xxx]> FULANO DE TAL logou na página !
[22:03:14][201.7.xxx.xxx]> FULANO DE TAL fechou sessão!
Se puder ajudar pelo menos como fazer o nome do usuário aparecer ja agradeço d++… tentei colocar sessão e um monte de gambiarra mas nada deu…
Abraço
#2 by Rafael Biriba on 23/07/2009 - 12:44
Olá Nataniel,
Que bom que funcionou como o desejado !
Vamos ver se condigo ajudá-lo:
No seu código php, antes de você redirecionar o “Fulano de Tal” para a “área restrita”, coloque o seguinte código:
Logger(”FULANO DE TAL logou na página !”);
E na página onde você vai processar o logoff, ou o término da sessão, coloque:
Logger(”FULANO DE TAL fechou sessão!”);
Sua dúvida é essa mesmo ?
Obrigado pela visita e volte sempre !
#3 by Nataniel Santos on 23/07/2009 - 15:09
Quase… se fosse só isso seria fácil! Tenho 300 usuários cadastrados, então qro que no log de acesso apareça cada usuário q logou na página… exemplo:
[22:03:14][201.7.xxx.xxx]> Rafael logou no site!
[22:43:58][201.7.xxx.xxx]> Jeff logou no site!
[23:07:35][201.7.xxx.xxx]> Tulio logou no site!
Vlw!
#4 by Rafael Biriba on 23/07/2009 - 15:19
Olá Nataniel,
Mas é só isso, basta inserir a função logger nos lugares certos…
Para isso você deve analisar seu código para saber o lugar mais adequado para coloca-los !
Abraços,
#5 by Rodrigo on 25/03/2010 - 17:44
Muito bom mesmo esse seu codigo agora eu tenho uma duvida como e que eu faço para consultar os dados gerados pelo log e outra duvida como e que eu faço pra colocar o que o usuario fez tipo fulano de tal cadastro
fulano de tal deleto
#6 by Rafael Biriba on 25/03/2010 - 18:06
Olá Rodrigo,
Você pode acessar o arquivo de log na mesma pasta que roda o php… você pode gravar em outra pasta conforme mostro abaixo:
$arquivo = “../logs/Logger_$data.txt”;
Para logar que um usuário se cadastrou veja em:
http://www.rafaelbiriba.com/2009/07/02/php-arquivo-de-log-personalizado.html#comment-249
No seu php, onde você grava o usuário, basta incluir o logger e chamar a função, como mostro no exemplo que passei…
Boa sorte,
Abraços,