Establecer el formato del log de accesos en Apache

El log de accesos o requests de Apache registra todas las peticiones que el servidor web, o bien, el VirtualHost recibe.

El formato de cada registro hace uso de un conjunto de identificadores que se reemplazan por los datos de la petición a la hora de registrarla. En el sitio de Apache, pueden consultar los identificadores de formato definidos para la versión 2.2.

Directiva LogFormat

Estos formatos pueden definirse mediante la directiva LogFormat, y asociarse a un nombre:

LogFormat <STRING-FORMATO> [<NOMBRE-FORMATO>]

donde:

  • STRING-FORMATO es una cadena de caracteres entre comillas dobles (“) que contiene los identificadores de formato deseados
  • (opcional) NOMBRE-FORMATO es el nombre al cual se asocia el formato detallado previamente

Si se especifica el NOMBRE-FORMATO lo único que sucede es que el formato definido se asocia a ese nombre.

Ejemplo:

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

Directiva TransferLog

La directiva TransferLog utiliza el formato definido por el último LogFormat que no especifique un NOMBRE-FORMATO (en ese caso también se puede usar un NOMBRE-FORMATO en lugar del STRING-FORMATO para referirse a uno definido previamente).

Ejemplo:

LogFormat combined

TransferLog logs/www-access_log

Si no hubiera ninguno definido, toma por defecto el Common Log Format (CLF):

"%h %l %u %t \"%r\" %>s %b"

Directiva CustomLog

Si queremos generar diferentes logs, cada uno con su formato, debemos hacer uso de la directiva CustomLog:

CustomLog <ARCHIVO> <STRING-FORMATO>|<NOMBRE-FORMATO>

donde:

  • ARCHIVO indica el archivo físico donde se registrarán las peticiones, el cual debe ser relativo a la ubicación definida en la directiva ServerRoot (por defecto, el directorio donde instalamos Apache)

Ejemplo:

CustomLog logs/www-access_log common

o bien

CustomLog logs/www-access_log "%h %l %u %t \"%r\" %>s %b"

Anuncios

Definir un VirtualHost en Apache para Windows

Una vez instalado Apache en Windows, podemos proceder a definir un VirtualHost, VHost o Host Virtual el cual nos permitirá acceder a nuestro sitio a través del servidor web.

Antes que nada es necesario que definamos un dominio local para nuestro VirtualHost (para evitar utilizar localhost) en caso de que no contemos con un servidor de DNS.

Acceder al archivo de configuración

Para comenzar debemos recordar la ubicación donde instalamos Apache.

Una vez allí debemos abrir con un editor de textos el archivo: conf\httpd.conf

Permitir la utilización de Virtualhosts

Esta acción se realiza de diferentes maneras según la versión de Apache:

Versión 2.0.x

Quitar el comentario de la línea (sólo borrando el # inicial):

NameVirtualHost *:80

Versión 2.2.x

Quitar el comentario de la línea (sólo borrando el # inicial):

Include conf/extra/httpd-vhosts.conf

Agregar un VirtualHost

Nuevamente, dependiendo de la versión de Apache

Versión 2.0.x

Al final del texto de httpd.conf, copiar la plantilla propuesta y ajustarla

Versión 2.2.x

Editar el archivo conf\extra\httpd-vhosts.conf, borrar los virtualhosts definidos, copiar la plantilla propuesta y ajustarla

Reiniciar Apache

Procedemos a reiniciar el servicio de Apache para que tome la nueva configuración.

Probar el VirtualHost

Abrimos un navegador y accedemos al dominio local que hayamos determinado y veremos que se muestra el contenido correspondiente.

 

Plantilla de VirtualHost

<VirtualHost *:80>
    ServerAdmin user@localhost
    DocumentRoot SITE_PATH
    <Directory SITE_PATH>
        Options +Indexes
        Allow from All
    </Directory>
    DirectoryIndex INDEX_LIST
    ServerName DOMINIO_LOCAL
    ErrorLog logs/www-error_log
    CustomLog logs/www-access_log common
</VirtualHost>

A continuación les explico cada una de las líneas:

<VirtualHost *:80>

Define un VirtualHost. En lugar de * se podría indicar una dirección IP para que solamente se acceda al sitio a través de la misma y separado por dos puntos se indica el puerto, en este caso, el puerto por defecto 80.

ServerAdmin user@localhost

Establece el mail del administrador del VirtualHost (solo a fines nominativos)

DocumentRoot SITE_PATH

Determina la ubicación en disco donde se encuentra nuestro sitio. En SITE_PATH debemos indicar esa ruta.

<Directory SITE_PATH>

Define las configuraciones de la ruta a nuestro sitio. SITE_PATH debe establecerse igual que en la directiva DocumentRoot.

Options +Indexes

Indicamos de esta manera que se listen los archivos contenidos en el SITE_PATH si no se determinara uno por defecto.

Allow from All

Establece que todos los hosts puedan acceder al área indicada. La versión 2.2.x de Apache bloquea el acceso por defecto.

DirectoryIndex INDEX_LIST

Define el listado de archivos que el servidor web intentará abrir por defecto (en el orden presentado) cuando no se especifique uno. INDEX_LIST es una concatenación de archivos separados por coma: index.html, index.php

ServerName DOMINIO_LOCAL

Indica el dominio al cual responde este VirtualHost.

ErrorLog logs/www-error_log

Ubicación del log de errores

CustomLog logs/www-access_log common

Ubicación del log de accesos (requests) y su formato, en este caso “common”, el cual se encuentra definido previamente en la configuración de Apache

Ejemplo de VirtualHost configurado

<VirtualHost *:80>
    ServerAdmin andres@localhost
    DocumentRoot c:/www/site/
    <Directory c:/www/site/>
        Options +Indexes
        Allow from All
    </Directory>
    DirectoryIndex index.php
    ServerName virtualsite
    ErrorLog logs/virtualsite-error_log
    CustomLog logs/virtualsite-access_log common
</VirtualHost>

habiendo definido en el archivo hosts

127.0.0.1 virtualsite