Os registros de log possuem extrema importância para administradores de sistemas, pois, a única forma que temos de detectar erros ou falhas é por meio da análise de arquivos que registram as transações realizadas pelo servidor, portanto é interessante padronizar esses registros de modo que possam ser lidos de forma clara e inteligível. Fazer essas configurações nem sempre são fáceis, o que requer um planejamento para padronizar os registros.
Separar os registros de cada sistema, ou portal, é a forma mais adequada para que não haja confusão na hora de procurar por falhas, de posse disso, pode-se direcionar os registros para um arquivo específico, bastando indicar o caminho do arquivo no parâmetro ErrorLog dentro do arquivo .htaccess, porém é necessário criar o arquivo dentro do diretório /var/log/apache2. Sugere-se que esse arquivo possua um nome que faça referência ao domínio utilizado, como mostra o exemplo abaixo.
ErrorLog /var/log/apache2/gnu-lia-error.log
Por padrão, o apache gera registros log com formatos com padrão próprio que por sua vez, tornam-os complicados para leitura, embora, é possível modelar o formato do registro conforme a necessidade de informações.
O módulo responsável por permitir essa formatação é o módulo mod_log_config, que é compatível com o apache 1.3 ou superior. Suas configurações podem ser feitas no arquivo de configuração principal apache.conf e no arquivo .htaccess caso esteja configurado no parâmetro AccessFileName no arquivo principal.
As linhas adicionadas no arquivo podem conter o nome do host, log remoto, usuário remoto e, caso necessite de autenticação, data, hora e status de requisição. Usa-se dois parâmetros para formatar o registro, LogFormat que define o formato e CustomLog que indica o diretório e um alias (nickname).
Veja abaixo todos os caracteres responsável pela formatação.
Tabela de caracteres:
Caracteres | Especificação |
%a | IP remoto |
%A | IP local |
%B | Bytes enviados, exceto cabeçalho HTTP |
%b | Bytes enviados, exceto cabeçalho HTTP, adicionando – (Traço) quando for 0 bytes |
%c | Estado de conexão, quando concluída |
%f | FileName: Nome de arquivo |
%h | Host remoto |
%H | Protocolo de pedido |
%l | Refere-se a log remoto |
%m | Requisição de método |
%R | Antes de solicitar |
%s | Status da requisição |
%t | Data e Hora padrão americano |
%T | Tempo para atender a solicitação em segundos |
%u | Usuário remoto, em caso de autenticação disponível pelo auth |
%U | URL solicitada |
%v | Nome do servidor, que responde a solicitação |
%V | Nome do servidor de acordo com a configuração do UseCanonicalName |
A opção customLog define o arquivo onde serão adicionados os logs e Log Format pode definir uma série de formatos, bem como, registrar quais navegadores acessam determinado portal e formato de registro combinado.
"%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\""
Um exemplo de configuração de log padronizado utilizando o arquivo .htaccess pode ser visto abaixo.
<VirtualHost *>
ServerName cleysinhonv.gnu-lia.org
ServerAlias cleysinhonv.gnu-lia.org cleysinhonv
ServerAdmin
[email protected]
DocumentRoot "/home/usuario/public_html"
ErrorLog /var/log/apache2/gnu-lia-error.log
logFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" gnu-lia
CustomLog /var/log/apache2/gnu-lia-error.log
RedirectMatch ^/$ www.gnu-lia.org/cleysinhonv
</VirtualHost>
Para validar as configurações é necessário reiniciar o serviço.