Formato de log padrão
Por padrão, o Apache registra cada requisição em seu log de acesso, normalmente localizados dentro de seu diretório '/logs'. E se o arquivo de log for aberto em um editor de texto seu conteúdo deverá exibir algo como o trecho abaixo:
194.116.215.20 - - [14/Nov/2005:22:28:57 +0000] "GET / HTTP/1.0" 200 16440 87.113.68.91 - - [15/Nov/2005:22:45:56 +0000] "GET / HTTP/1.1" 200 36821 87.113.68.91 - - [15/Nov/2005:22:45:56 +0000] "GET /index.php?=PHPE9568F35-D428-11d2-A769-00AA001ACF42 HTTP/1.1" 200 2146 87.113.68.91 - - [15/Nov/2005:22:45:56 +0000] "GET /index.php?=PHPE9568F34-D428-11d2-A769-00AA001ACF42 HTTP/1.1" 200 4644Cada linha neste arquivo representa uma solicitação de HTTP de entrada, e o Apache registra estas informações usando um formato conhecido como Common Log Format (CLF).
E da esquerda para a direita, este formato contém as seguintes informações sobre a requisição:
- Ip de origem;
- identificação do cliente;
- Usuário remoto, se autenticado;
- timestamp (data, hora, fuso) da requisição;
- Método HTTP + URI da requisição;
- Resposta do servidor com Código do protocolo HTTP;
- Tamanho do bloco de dados de resposta em bytes;
Estes vários campos são separados por espaços, com o campo de data/hora entre colchetes.
Este estilo CLF é bastante normal entre servidores Web, e a maioria das ferramentas de análise de log são capazes de analisá-lo, sem qualquer personalização especial.
Você pode alterar o formato de log padrão para armazenar mais informações sobre cada pedido, alterando a directiva
LogFormat
no arquivo de configuração do Apache.Esta diretiva aceita dois valores: uma seqüência que consiste em modificadores de formato, cada um representando uma determinada peça de dados sobre a solicitação de entrada, e um rótulo legível para a cadeia. Assim, por exemplo, uma directiva LogFormat para o CLF poderia ficar assim:
LogFormat "%h %l %u %t \"%r\" %>s %b" commonA lista completa dos modificadores suportados pela directiva LogFormat podem ser consultadas no Manual Oficial Apache.
Criando um formato customizado
Se o formato de log padrão, como descrito acima, não é adequado para as suas necessidades, há um processo simples de três etapas para modificá-lo.
Passo #1: Defina um novo formato de registo e atribua-lhe um rótulo através da diretiva LogFormat
Para exemplo suponha que você quer apenas a data, hora, protocolo e URL solicitada.
Olhando para a lista de modificadores de formato, é claro que esta informação é incorporado em símbolos %H,%m, %t, e %U, respectivamente.
Use essas informações para criar uma seqüência de registro personalizado e atribuir-lhe o rótulo simples, como abaixo:
LogFormat "%H %m %t %U" simplePasso #2: Defina uma diretiva CustomLog com o novo formato
Em seguida, modifique a directiva CustomLog existente para fazer referência a sua nova cadeia de formato, através de seu rótulo, como segue:
CustomLog logs/access.log simplePasso #3: Reinicie o Apache
Uma vez que as alterações de configuração foram salvas, reinicie o servidor Web para que as alterações tenham efeito.
shell> /usr/local/apache/bin/apachectl restartE agora, se você inspecionar seus registros após deixar Apache servir algumas solicitações de entrada, e verá um registro com as informações configuradas:
HTTP/1.1 GET [12/Oct/2006:16:49:06 +0530] /index.php HTTP/1.1 GET [12/Oct/2006:16:49:07 +0530] /index.php HTTP/1.1 GET [12/Oct/2006:16:49:07 +0530] /favicon.ico HTTP/1.1 GET [12/Oct/2006:16:49:15 +0530] /dev/csstext3.html
Mais alguns exemplos
- Se você gostaria de registrar o referenciador e navegador que fez a solicitação, você pode usar um formato como este:
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" detailed CustomLog logs/access.log detailed- se você gostaria de comparar o tempo gasto para atender a solicitação vis-à-vis o tamanho do pedido, considere o seguinte:
LogFormat "%U %b %T" timediff CustomLog logs/access.log timediff- Como cerca de gravação os endereços IP local e remota, o tamanho da resposta, a primeira linha do pedido, o protocolo, e o carimbo de hora, todos separados por pipes?
LogFormat "%a | %h | %P | %r | %t | %U | %q | %H" complex CustomLog logs/access.log complex
Multiplos arquivos de Log
Há ainda a possibilidade de multiplos arquivos de Log em vez de todas as informações amontoadas em um único arquivo.
Os registros podem ser separados com envio de alguns dados para um arquivo e os restantes para outro. É bastante fácil de fazer: Definir os multiplos LogFormat e, em seguida, digite uma directiva CustomLog separado (com um local de arquivo diferente) para cada um.
O trecho abaixo é um exemplo; ele envia informações detalhadas solicitação para o arquivo de log principal, referenciador informações para um segundo arquivo de log e endereços IP do cliente a um terceiro:
LogFormat "%h %l %u %t \"%r\" %>s %b" detailed LogFormat "%h" ip LogFormat "%U \"%{Referer}i\"" referer CustomLog logs/access.log detailed CustomLog logs/ip.log ip CustomLog logs/referer.log refererLembre-se de dar a permissão de gravação para o servidor Web logs / diretório ou então nenhum de seus logs serão criados.Ferramentas para análise de Log
Uma vez que você tem seus arquivos de log configurado do jeito que você quiser, você provavelmente vai querer analisar os dados que está coletando gradualmente dentro deles. Para concluir, aqui está uma lista de algumas das mais populares ferramentas de análise de log disponíveis on-line, com URLs:
- http://www.awstats.org/
- http://piwik.org/
- http://www.http-analyze.org/
- http://www.analog.cx/
- http://www.boutell.com/wusage/
Referências
- http://httpd.apache.org/docs/1.3/mod/mod_log_config.html#formats
- http://www.techrepublic.com/blog/linux-and-open-source/how-do-i-customize-apache-server-log-files-to-track-my-web-site/
- http://www.sitepoint.com/configuring-web-logs-apache/
Comentários