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 cleysinhonv@gmail.com
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.