Eu acho que você precisa de registro forense, veja este link: link
snippet:
Formato do registro forense:
Cada pedido é registrado duas vezes. A primeira vez é antes de ser processada (isto é, depois de receber os cabeçalhos). A segunda entrada de log é gravada após o processamento da solicitação ao mesmo tempo em que o registro normal ocorre.
Para identificar cada solicitação, um ID de solicitação exclusivo é atribuído. Esse ID forense pode ser registrado em log no log de transferência normal usando a string 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 pipe (|). Uma linha de amostra é semelhante à seguinte (tudo em uma linha):
+ yQtJf8CoAB4AAFNXBIEAAAAA | GET /manual/de/images/down.gif HTTP / 1.1 | Host: host local% 3a8080 | User-Agent: Mozilla / 5.0 (X11; U; Linux i686; en-US; rv% 3a1. 6) Gecko / 20040216 Firefox / 0.8 | Aceitar: image / png, etc ...
O caractere mais no início indica que esta é a primeira linha de log dessa solicitação. A segunda linha contém apenas um caractere negativo e o ID novamente:
-yQtJf8CoAB4AAFNXBIEAAAAA
O script check_forensic aceita como argumento o nome do arquivo de log. Ele procura por esses pares de +/- ID e reclama se uma solicitação não foi concluída.