Log Files

Access Log

the server access log regists all requests processed by the server. A localização e o conteúdo do diário de acesso são controlados pela directiva CustomLog. A diretiva

pode ser usada para simplificar a seleção do conteúdo dos registros. Esta secção descreve como configurar o servidor para gravar as informações no registo de acesso.

naturalmente, armazenar a informação no log de acesso é apenas o início da gestão do log., O próximo passo é analisar esta informação para produzir estatísticas úteis. A análise de Log em geral está além do escopo deste documento, e não faz realmente parte do trabalho do próprio servidor web. Para mais informações sobre este tópico, e para aplicações que realizam análise de log, verifique o diretório Aberto.

várias versões do Apache httpd usaram outros módulos e diretrizes para controlar o registro de acesso, incluindo mod_log_referer, mod_log_agent, e o TransferLog diretiva., A Directiva

subsuma agora a funcionalidade de todas as directivas mais antigas.

o formato do log de acesso é altamente configurável. O formato é especificado usando uma cadeia de formato que se parece muito com um estilo C printf(1) format string. Alguns exemplos são apresentados nas secções seguintes. Para uma lista completa do possível Conteúdo da cadeia de formato, veja o mod_log_config format strings.

formato de registo comum

uma configuração típica para o registo de acesso pode parecer como se segue.,

LogFormat "%h %l %u %t \"%r\" %>s %b" commonCustomLog logs/access_log common

isto define o apelido common e associa-o com uma cadeia de formato de log. A cadeia de formato consiste de diretivas por cento, cada uma das quais diz ao servidor para registrar uma determinada informação. Caracteres literais também podem ser colocados na cadeia de formato e serão copiados diretamente para a saída de log. O caractere de citação () deve ser escapado colocando uma barra invertida antes dele para evitar que ele seja interpretado como o fim da cadeia de formato., A cadeia de formato também pode conter os caracteres especiais de controle “\n” para nova linha e “\t ” para tab.

a Directiva CustomLog estabelece um novo ficheiro de Registo usando o apelido definido. O nome do ficheiro para o registo de acesso é relativo ao ServerRoot a menos que comece com uma barra.

a configuração acima irá escrever entradas de registo num formato conhecido como o formato de registo comum (CLF). Este formato padrão pode ser produzido por muitos servidores web diferentes e lido por muitos programas de análise de log., As entradas de ficheiros de Registo produzidas no CLF serão algo parecido com isto:

127.0.0.1 - frank "GET /apache_pb.gif HTTP/1.0" 200 2326

cada parte deste registo está descrita abaixo.

127.0.0.1(%h) este é o endereço IP do cliente (máquina remota) que fez o pedido ao servidor. SeHostnameLookupsé definido comoOn, então o servidor irá tentar determinar o nome da máquina e registrá-lo no lugar do endereço IP. No entanto, esta configuração não é recomendada uma vez que pode atrasar significativamente o servidor., Em vez disso, é melhor usar um log pós-processador comologresolvepara determinar os nomes de host. O endereço IP aqui relatado não é necessariamente o endereço da máquina na qual o usuário está sentado. Se um servidor proxy existir entre o Usuário e o servidor, este endereço será o endereço do proxy, em vez da máquina de origem.-(%l) o “hífen” na saída indica que a informação solicitada não está disponível., Neste caso, a informação que não está disponível é a identidade do cliente RFC 1413 determinada poridentdna máquina do cliente. Esta informação é altamente pouco fiável e quase nunca deve ser utilizada excepto em redes internas rigorosamente controladas. O Apache httpd nem sequer tentará determinar esta informação a menos queIdentityCheckseja definido comoOn.frank(%u) este é o Utilizador da pessoa que solicita o documento conforme determinado pela autenticação HTTP., O mesmo valor é tipicamente fornecido para scripts CGI na variável de ambienteREMOTE_USER. Se o código de Estado para a solicitação (veja abaixo) é 401, então este valor não deve ser confiável porque o usuário ainda não está autenticado. Se o documento não estiver protegido por senha, esta parte será “-” tal como a anterior.(%t) o momento em que o pedido foi recebido., O formato é:

é possível ter o tempo exibido em outro formato, especificando %{format}t no log de cadeia de caracteres de formato, onde format é como strftime(3) da biblioteca C standard, ou um dos formatos de fichas especiais. Para mais detalhes, consulte o mod_log_config format strings.

"GET /apache_pb.gif HTTP/1.0"(\"%r\") a linha de pedido do cliente é dada entre aspas duplas. A linha de pedido contém uma grande quantidade de informações úteis., Em primeiro lugar, o método utilizado pelo cliente éGET. Segundo, o cliente pediu o recurso/apache_pb.gif, e terceiro, o cliente usou o protocoloHTTP/1.0. Também é possível registrar uma ou mais partes da linha de pedido de forma independente. Por exemplo, a cadeia de formato “%m %U%q %H” registrará o método, caminho, cadeia de consulta e protocolo, resultando exatamente na mesma saída que “

%r“.200(%>s) este é o código de Estado que o servidor envia de volta para o cliente., Esta informação é muito valiosa, porque ele revela se o pedido resultou em uma resposta bem-sucedida (códigos início em 2), um redirecionamento (códigos início em 3), um erro causado pelo cliente (códigos início em 4), ou a um erro no servidor (códigos início em 5). A lista completa dos códigos de Estado possíveis pode ser encontrada na especificação HTTP (RFC2616 secção 10).2326(%b) A última parte indica o tamanho do objeto retornado para o cliente, não incluindo os cabeçalhos de resposta., Se nenhum conteúdo foi devolvido ao cliente, Este valor será “-“. To log”0“for no content, use%Binstead.

formato de Log combinado

outra cadeia de formato comumente usada é chamada de formato de Log combinado. Pode ser utilizado da seguinte forma.

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" combinedCustomLog log/access_log combined

Este formato é exatamente o mesmo que o formato Log comum, com a adição de mais dois campos. Cada um dos campos adicionais usa a diretriz por cento %{header}i, onde o cabeçalho pode ser qualquer cabeçalho HTTP request., O log de acesso sob este formato será parecido com:

os campos adicionais são:

"http://www.example.com/start.html"(\"%{Referer}i\") o cabeçalho “Referer” (sic) HTTP request header. Isto dá o site de onde os relatórios do cliente foram encaminhados. (Esta deve ser a página que liga ou inclui/apache_pb.gif)."Mozilla/4.08 (Win98; I ;Nav)"(\"%{User-agent}i\") the User-Agent HTTP request header. Esta é a informação de identificação que o navegador cliente relata sobre si mesmo.,

múltiplos registos de acesso

múltiplos registos de acesso podem ser criados simplesmente especificando múltiplos CustomLog directivas no ficheiro de configuração. Por exemplo, as seguintes diretivas criarão três logs de acesso. O primeiro contém a informação básica do CLF, enquanto o segundo e o terceiro contêm a informação referente e navegador. As duas últimas linhas mostram como imitar os efeitos das diretivas

eAgentLog.,

Este exemplo também mostra que não é necessário definir um apelido com o LogFormat directiva. Em vez disso, o formato de log pode ser especificado diretamente na diretiva CustomLog.

Logs condicionais

Existem momentos em que é conveniente excluir certas entradas dos logs de acesso com base nas características do pedido do cliente. Isto é facilmente realizado com a ajuda de variáveis de ambiente. Em primeiro lugar, deve ser fixada uma variável ambiental que indique que o pedido satisfaz determinadas condições., Isto é geralmente realizado com SetEnvIf. Em seguida, a cláusula env= da cláusula CustomLog directiva é usada para incluir ou excluir pedidos onde a variável de ambiente é definida. Alguns exemplos:

Como outro exemplo, considere pedidos de registro de falantes de Inglês para um arquivo de log, e não-falantes de Inglês para um arquivo de log diferente.

SetEnvIf Accept-Language "en" englishCustomLog logs/english_log common env=englishCustomLog logs/non_english_log common env=!english

em um cenário de cache se gostaria de saber sobre a eficiência do cache., Um método muito simples para descobrir isso seria:

SetEnv CACHE_MISS 1LogFormat "%h %l %u %t "%r " %>s %b %{CACHE_MISS}e" common-cacheCustomLog logs/access_log common-cache

mod_cache será executado antes de mod_env e, quando bem sucedida, vai entregar o conteúdo sem ele. Nesse caso, um acerto de cache registrará -, enquanto que uma falha de cache registará 1.,

ao env= sintaxe, LogFormat suporta o registo de valores condicionais sobre o código de resposta HTTP:

LogFormat "%400,501{User-agent}i" browserlogLogFormat "%!200,304,302{Referer}i" refererlog

No primeiro exemplo, o User-agent será registrado se o código de status do HTTP é de 400 ou 501. Em outros casos, um “-” literal será registrado. Da mesma forma, no segundo exemplo, o Referer será registrado se o código de estado HTTP não for 200, 204, ou 302. (Note o”!”antes dos códigos de Estado.,

embora tenhamos mostrado que o registro condicional é muito poderoso e flexível, não é a única maneira de controlar o conteúdo dos logs. Os ficheiros de registo são mais úteis quando contêm um registo completo da actividade do servidor. Muitas vezes é mais fácil simplesmente postar os arquivos de log para remover pedidos que você não quer considerar.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *