Apache es una de esas herramientas tan complejas para las que todos utilizamos un porcentaje ínfimo de las opciones que incorpora (y tampoco necesitamos más). Esa complejidad probablemente será una de las razones por las que otros proyectos hayan apostado por alternativas más ligeras como nginx. Pero bueno, eso es otro tema. Aquí vamos a sacarle partido de esa complejidad.
Los logs de Apache tienen un formato predefinido en la configuración por defecto. En el caso de Apache 2 en Ubuntu (y derivados de Debian), puedes encontrar una lista de los formatos de log dentro del archivo /etc/apache2/apache2.conf, con la directiva LogFormat:
LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %O" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
Con lo anterior (en concreto con el formato combined) es perfectamente posible salir a la calle muy dignamente en la mayoría de casos. Eso ya nos aporta información sobre fechas, accesos, navegadores (incluyendo buscadores), respuestas y tamaños en bytes.
Para añadir un nuevo formato puedes partir de alguno de los casos anteriores (combined por ejemplo) y añadir tu variable:
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\" %I" sopadebits_combined
Con el log anterior, podemos acceder a nuestra configuración de host y modificar el formato del log que queremos:
CustomLog /var/log/apache2/localhost.log sopadebits_common
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\" %T %D" time_combined
Otros casos podrían ser, por ejemplo, incluir el contenido de una cabecera de HTTP (por ejemplo generada por la propia aplicación) por ejemplo para llevar un control de las operaciones internas.
© 2007 and beyond Mario Alberich, licensed under CC-BY-SA unless stated otherwise.