Apache CustomLog para registrar la URL completa

16

Me gustaría agregar una CustomLogdirectiva a mi configuración de apache para registrar la URL completa solicitada (o al menos la parte del host de la URL). Tengo varios dominios manejados por la misma instancia de apache, y me gustaría poder distinguir los dominios en los registros (como ahora todo lo que veo es "GET /"). Veo en la documentación de LogFormat que se enumera %Upara imprimir la parte de ruta de la URL, pero estoy buscando el host.

jrdioko
fuente

Respuestas:

20

Sigue leyendo la LogFormatdocumentación y encontrarás:

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

Lo que significa que podría incluir en su configuración:

%{Host}i

Las directivas %vy %Vtambién pueden brindarle lo que desea.

% v siempre será el valor de ServerName(el "nombre canónico" de su host virtual). %V puede ser el valor de ServerName, o puede ser el valor del Hostencabezado HTTP , dependiendo de si ha UseCanonicalNamehabilitado o no en su configuración (y si el cliente proporcionó o no un Hostencabezado).

larsks
fuente
¿ %{Host}iFuncionará incluso para HTTP / 1.0? %Vse ve bien a primera vista, gracias!
jrdioko
Creo que% {Host} i (o cualquier% {...} i construcción) solo producirá un resultado si ese encabezado realmente existe en la solicitud. Entonces, para HTTP / 1.0, no esperaría que fuera útil.
larsks
Una aclaración más: ¿Entonces %Vserá idéntico a %{Host}isi UseCanonicalNameestá deshabilitado?
jrdioko
1
De acuerdo con la documentación, "Con UseCanonicalName desactivado, Apache formará URL autorreferenciales utilizando el nombre de host y el puerto proporcionados por el cliente, si se proporciona alguno (de lo contrario, utilizará el nombre canónico, como se definió anteriormente)". Entonces %Vlo usará ServerNamesi no hay Hostencabezado.
larsks
2

'% v' es el ServerName podría ser lo que quieres?

agy
fuente
Parece que %vsiempre devuelve la misma cadena en mi situación: el valor de ServerName independientemente de qué dominio aparece en la URL. Pero %Vparece que hace lo correcto.
jrdioko
Eso está relacionado con el nombre del host virtual
Robert
2

Agregar %va su formato de registro.

Algo como esto:

LogFormat "%v - %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" combined-vhost
CustomLog /log/file/location combined-vhost
Shane Madden
fuente
1
Parece que %vsiempre devuelve la misma cadena en mi situación: el valor de ServerName independientemente de qué dominio aparece en la URL. Pero %Vparece que hace lo correcto.
jrdioko
2

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

%{Host}i%U%qda url completa.

borayeris
fuente