Acho que o que você precisa de log forense, consulte este link: http://httpd.apache.org/docs/current/mod/mod_log_forensic.html
snippet:
Formato de registro forense:
Cada solicitação é registrada duas vezes. A primeira vez é antes de ser processado (após receber os cabeçalhos). A segunda entrada de log é gravada após o processamento da solicitação ao mesmo tempo em que ocorre o log normal.
Para identificar cada solicitação, um ID de solicitação exclusivo é atribuído. Esse ID forense pode ter registro cruzado no log de transferência normal usando a sequência de formato% {forensic-id} n. Se você estiver usando mod_unique_id, seu ID gerado será usado.
A primeira linha registra o ID forense, a linha de solicitação e todos os cabeçalhos recebidos, separados por caracteres de barra vertical (|). Uma linha de amostra é semelhante à seguinte (todas em uma linha):
+ yQtJf8CoAB4AAFNXBIEAAAAA | GET /manual/de/images/down.gif HTTP / 1.1 | Host: localhost% 3a8080 | Agente do usuário: Mozilla / 5.0 (X11; U; Linux i686; en-US; rv% 3a1.6) Gecko / 20040216 Firefox / 0.8 | Aceitar: imagem / png, etc ...
O caractere mais no início indica que esta é a primeira linha de log desta solicitação. A segunda linha contém apenas um caractere de menos e o ID novamente:
-yQtJf8CoAB4AAFNXBIEAAAAA
O script check_forensic usa como argumento o nome do arquivo de log. Ele procura esses pares +/- ID e reclama se uma solicitação não foi concluída.