Registro em log do W3C
O registro em log estendido do W3C é um tipo de log do lado do servidor que pode ser habilitado na sessão do servidor ou no grupo de URLs. Quando o registro em log do W3C é habilitado em um grupo de URL, 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 URL 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 do servidor HTTP gerada" precisam ser passados dentro HTTP_LOG_FIELDS_DATA estrutura por aplicativo. O aplicativo pode gerar esses campos da estrutura de 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 | Hora | O tempo, em UTC (tempo universal coordenado), no qual 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 | cs-method | 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. Uma consulta URI (Universal Resource Identifier) é necessária apenas para páginas dinâmicas. | 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 de Usuário | cs-username | O nome do usuário autenticado que acessou o servidor. Usuários anônimos são indicados por um hífen. | UserName | HTTP_LOG_FIELD_USER_NAME |
Endereço IP do cliente | c-ip | O 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 de Usuário | cs(User-Agent) | O tipo de navegador usado pelo cliente. | UserAgent | HTTP_LOG_FIELD_USER_AGENT |
Biscoito | cs(Cookie) | O conteúdo do cookie enviado ou recebido, se houver. | Biscoito | HTTP_LOG_FIELD_COOKIE |
Referrer | cs(Referenciador) | O site que o usuário visitou pela última vez. Este site forneceu um link para o site atual. | Referrer | HTTP_LOG_FIELD_REFERRER |
Anfitrião | cs-host | O nome do cabeçalho do host, se houver. | Anfitrião | HTTP_LOG_FIELD_HOST |
HTTP Status | sc-status | O código de status HTTP. | ProtocolStatus | HTTP_LOG_FIELD_STATUS |
Substatus de protocolo | sc-substatus | O código de erro do substatus. | SubStatus | HTTP_LOG_FIELD_SUB_STATUS |
Win32 Status | sc-win32-status | O código de status do Windows. | 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 gasto | 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 personalizado baseado em texto ASCII. 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 de 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 forem substituídos pelo sinal de adição (+), interromperiam 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 URL 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, tronco 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 maior do que outras solicitações semelhantes porque a API do servidor HTTP abre o arquivo de log com a primeira solicitação.