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.

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


¿ %{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?


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

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.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.