Registro em log do W3C
O registro em log estendido do W3C é o tipo de log do lado do servidor que pode ser habilitado na sessão do servidor ou no grupo de URLs. Quando o log do W3C está habilitado em um grupo de URLs, o registro em log é executado somente em solicitações roteadas para o Grupo de URLs. Um arquivo de log separado é criado para cada grupo de URL configurado para habilitar o registro em log do W3C.
Quando o log do W3C está habilitado na sessão do servidor, ele funciona como uma forma centralizada de registro em log para todos os grupos de URLs na sessão do servidor. Um único arquivo de log é mantido para todos os grupos de URLs na sessão do servidor.
A tabela a seguir lista os campos que podem ser registrados pela API do Servidor HTTP. A tabela contém um subconjunto das constantes HTTP_LOG_FIELD . Alguns dos campos listados abaixo são gerados automaticamente pela API do Servidor HTTP internamente e, portanto, não estão contidos na estrutura HTTP_LOG_FIELDS_DATA . A coluna "Aparece como" contém o texto que aparece no arquivo de log. Os dados na tabela estão na ordem de ocorrência no registro do arquivo de log.
Os campos que não estão marcados como "API de Servidor HTTP gerada" precisam ser passados para dentro HTTP_LOG_FIELDS_DATA estrutura por aplicativo. O aplicativo pode gerar esses campos da estrutura HTTP_REQUEST passada para ele.
Campo | Aparece como | Descrição | Membro HTTP_LOG_FIELDS_DATA | constantes HTTP_LOG_FIELDS |
---|---|---|---|---|
Data | data | A data em que a atividade ocorreu. | API do servidor HTTP gerada. | HTTP_LOG_FIELD_DATE |
Hora | time | A hora, em UTC (tempo universal coordenado), em que a atividade ocorreu. | API do servidor HTTP gerada. | HTTP_LOG_FIELD_TIME |
Nome do serviço e número da instância | s-sitename | O nome do serviço de Internet e o número da instância que estava em execução no cliente. | ServiceName | HTTP_LOG_FIELD_SITE_NAME |
Nome do Servidor | s-computername | O nome do servidor no qual a entrada do arquivo de log foi gerada. | ServerName | HTTP_LOG_FIELD_COMPUTER_NAME |
Endereço IP do servidor | s-ip | O endereço IP do servidor no qual a entrada do arquivo de log foi gerada. | ServerIp | HTTP_LOG_FIELD_SERVER_IP |
Método | método cs | O verbo solicitado, por exemplo, um método GET. | Método | HTTP_LOG_FIELD_METHOD |
Haste de URI | cs-uri-stem | O destino do verbo, por exemplo, Default.htm. | UriStem | HTTP_LOG_FIELD_URI_STEM |
Consulta URI | cs-uri-query | A consulta, se houver, que o cliente estava tentando executar. Um URI (Resource Identifier Universal) consulta é necessário apenas para páginas dinâmico. | UriQuery | HTTP_LOG_FIELD_URI_QUERY |
Porta do servidor | s-port | O número da porta do servidor configurado para o serviço. | ServerPort | HTTP_LOG_FIELD_SERVER_PORT |
Nome do Usuário | cs-username | O nome do usuário autenticado que acessou o servidor. Os usuários anônimos são indicados por um hífen. | UserName | HTTP_LOG_FIELD_USER_NAME |
Endereço IP do Cliente | c-ip | Endereço IP do cliente que fez a solicitação. | ClientIp | HTTP_LOG_FIELD_CLIENT_IP |
Versão do protocolo | cs-version | A versão do protocolo HTTP usada pelo cliente. | API do servidor HTTP gerada. | HTTP_LOG_FIELD_VERSION |
Agente do usuário | cs(User-Agent) | O tipo de navegador que o cliente usou. | UserAgent | HTTP_LOG_FIELD_USER_AGENT |
Cookie | cs(Cookie) | O conteúdo do cookie enviado ou recebido, se houver. | Cookie | HTTP_LOG_FIELD_COOKIE |
Referenciador | cs(Referrer) | O site que o usuário visitou pela última vez. Esse site fornece um link para o site atual. | Referenciador | HTTP_LOG_FIELD_REFERRER |
Host | cs-host | O nome do cabeçalho do host, se houver. | Host | HTTP_LOG_FIELD_HOST |
Status HTTP | sc-status | O código de status do HTTP. | ProtocolStatus | HTTP_LOG_FIELD_STATUS |
Substatus de protocolo | sc-substatus | O código de erro substatus. | SubStatus | HTTP_LOG_FIELD_SUB_STATUS |
Win32 Status | sc-win32-status | O código do Windows status. | Win32Status | HTTP_LOG_FIELD_WIN32_STATUS |
Bytes Enviados | sc-bytes | O número de bytes enviados pelo servidor. | API do servidor HTTP gerada. | HTTP_LOG_FIELD_BYTES_SENT |
Bytes Recebidos | cs-bytes | O número de bytes recebidos e processados pelo servidor. | API do servidor HTTP gerada. | HTTP_LOG_FIELD_BYTES_RECV |
Tempo decorrido | tempo gasto | O período de tempo que a ação tomou em milissegundos. | API do servidor HTTP gerada. | HTTP_LOG_FIELD_TIME_TAKEN |
ID do fluxo | streamid | A ID do Fluxo. | API do servidor HTTP gerada. | HTTP_LOG_FIELD_STREAM_ID |
O arquivo de log é um formato baseado em texto ASCII personalizável. Os prefixos de campo no arquivo são definidos da seguinte maneira:
Prefixo | Descrição |
---|---|
s | Ações do servidor. |
c | Ações do cliente. |
Sc | Ações de servidor para cliente. |
cs | Ações de cliente para servidor. |
O aplicativo pode selecionar um ou mais dos campos de arquivo de log estendido do W3C, no entanto, nem todos os campos conterão informações. Para campos selecionados, mas para os quais não há informações, um hífen (-) aparece como um espaço reservado. Se um campo contiver um caractere não imprimível, a API do servidor HTTP o substituirá por um sinal de adição (+) para preservar o formato do arquivo de log. Isso normalmente ocorre com ataques de vírus, quando, por exemplo, um usuário mal-intencionado envia retornos de carro e feeds de linha que, se não substituídos pelo sinal de adição (+), quebrariam o formato do arquivo de log. Os campos são separados por espaços.
Se um campo estiver habilitado pelo grupo de URL ou sessão do servidor, mas não estiver selecionado para a solicitação, ele aparecerá no arquivo de log com um hífen (-) como um espaço reservado.
Os arquivos de log são criados quando a primeira solicitação chega no Grupo de URLs ou na sessão do servidor, eles não são criados quando o registro em log é configurado. O exemplo a seguir mostra a primeira entrada de arquivo de log para um arquivo de log W3C com os campos IP do cliente, nome de usuário, IP do servidor, porta do servidor, método, haste de URI, consulta de URI, status e agente de usuário habilitados:
#Software: Microsoft HTTP Server API 2.0
#Version: 1.0 // the log file version as it's described by "https://www.w3.org/TR/WD-logfile".
#Date: 2002-05-02 17:42:15 // when the first log file entry was recorded, which is when the entire log file was created.
#Fields: date time c-ip cs-username s-ip s-port cs-method cs-uri-stem cs-uri-query sc-status cs(User-Agent)
2002-05-02 17:42:15 172.22.255.255 - 172.30.255.255 80 GET /images/picture.jpg - 200 Mozilla/4.0+(compatible;MSIE+5.5;+Windows+2000+Server)
O campo demorado é inicializado quando a API do servidor HTTP recebe o primeiro byte, antes que a solicitação seja analisada. O carimbo de data/hora demorado é interrompido quando ocorre a última conclusão do envio. O tempo gasto não reflete o tempo em toda a rede. A primeira solicitação para o site mostra um tempo um pouco mais longo do que outras solicitações semelhantes porque a API do servidor HTTP abre o arquivo de log com a primeira solicitação.