[Rafael Biriba] PHP: Arquivo de log personalizado

 

PHP: http://www.php.net/

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. :)