Apache CustomLog pour enregistrer l'URL complète


16

Je voudrais ajouter une CustomLogdirective à ma configuration apache pour enregistrer l'URL complète demandée (ou au moins la partie hôte de l'URL). J'ai plusieurs domaines gérés par la même instance d'apache, et j'aimerais pouvoir distinguer les domaines dans les journaux (comme maintenant tout ce que je vois est "GET /"). Je vois dans la documentation sur LogFormat qu'il répertorie %Upour imprimer la partie chemin de l'URL, mais je recherche l'hôte.

Réponses:


20

Continuez à lire la LogFormatdocumentation et vous trouverez:

%...{Foobar}i:  The contents of Foobar: header line(s) in the request
                sent to the server.

Ce qui signifie que vous pouvez inclure dans votre configuration:

%{Host}i

Les directives %vet %Vpeuvent également vous fournir ce que vous voulez.

% v sera toujours la valeur de ServerName(le "nom canonique" de votre hôte virtuel). %V peut être la valeur de ServerName, ou peut être la valeur de l'en- Hosttête HTTP , selon que vous avez ou non UseCanonicalNameactivé dans votre configuration (et si le client a fourni ou non un en- Hosttête).


Fonctionnera %{Host}imême pour HTTP / 1.0? %Vregarde bien à première vue, merci!
jrdioko

Je crois que% {Host} i (ou toute construction% {...} i) ne produira un résultat que si cet en-tête existe réellement dans la demande. Donc, pour HTTP / 1.0, je ne m'attendrais pas à ce qu'il soit utile.
larsks

Une autre précision: %Vsera donc identique à %{Host}isi UseCanonicalNameest désactivé?
jrdioko

1
Selon la documentation, "Avec UseCanonicalName désactivé, Apache formera des URL auto-référentielles en utilisant le nom d'hôte et le port fournis par le client si certains sont fournis (sinon il utilisera le nom canonique, tel que défini ci-dessus)." Va donc %Vutiliser ServerNames'il n'y a pas d'en- Hosttête.
larsks

2

'% v' est le ServerName pourrait être ce que vous voulez?


Il semble %vtoujours retourner la même chaîne dans ma situation: la valeur ServerName quel que soit le domaine qui apparaît dans l'URL. Mais %Von dirait qu'il fait la bonne chose.
jrdioko

Cela est lié au nom de l'hôte virtuel
Robert

2

Ajoutez %và votre format de journal.

Quelque chose comme ça:

LogFormat "%v - %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" combined-vhost
CustomLog /log/file/location combined-vhost

1
Il semble %vtoujours retourner la même chaîne dans ma situation: la valeur ServerName quel que soit le domaine qui apparaît dans l'URL. Mais %Von dirait qu'il fait la bonne chose.
jrdioko

2

LogFormat "% h% l% u% t \"% r \ "%> s% b \"% {Referer} i \ "\"% {User-Agent} i \ "% {Host} i% U% q " combiné

%{Host}i%U%qdonne une URL complète.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.