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.

jrdioko
la source

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).

larsks
la source
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?

agy
la source
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
Shane Madden
la source
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.

borayeris
la source