# Cómo deshabilitar los logs de Apache2 en un VirtualHost

- Link: https://binariocero.com/linux/como-deshabilitar-los-logs-de-apache2-en-un-virtualhost
- Published: 2026-09-15T20:09:18+02:00
- Author: Juan José Fernández Durán

![Loading](https://binariocero.com/wp-content/plugins/page-views-count/ajax-loader-
2x.gif)

Apache2 genera registros de actividad para prácticamente todas las peticiones que
recibe. Estos registros son muy útiles para analizar errores, detectar problemas
y revisar la actividad de un servidor, pero en determinadas situaciones puede interesarnos**
deshabilitar los logs de un VirtualHost concreto**.

Por ejemplo, podemos tener un VirtualHost utilizado para una aplicación interna,
un servicio de pruebas o un sitio que recibe un volumen muy elevado de peticiones
y no queremos almacenar todos sus accesos.

En este artículo veremos cómo hacerlo correctamente en Apache2 sobre Debian/Ubuntu.

## ¿Qué tipos de logs genera Apache?

Los dos registros principales que podemos encontrar son:

 * **Access Log**: registra las peticiones HTTP/HTTPS recibidas.
 * **Error Log**: registra errores y determinados eventos relacionados con Apache.

Normalmente podemos encontrarlos en:

    ```wp-block-code
    /var/log/apache2/
    ```

Por ejemplo:

    ```wp-block-code
    access.log
    error.log
    other_vhost_access.log
    other_vhost_error.log
    ```

La configuración de estos registros se realiza principalmente mediante las directivas:

    ```wp-block-code
    CustomLog
    ErrorLog
    ```

## Deshabilitar los logs de un VirtualHost

La forma más sencilla de deshabilitar los registros de un VirtualHost concreto es
enviar ambos logs a `/dev/null`.

Por ejemplo:

    ```wp-block-code
    <VirtualHost *:80>
        ServerName tudominio.com

        CustomLog /dev/null combined
        ErrorLog /dev/null

        # Resto de configuración...
    </VirtualHost>
    ```

Con esta configuración:

    ```wp-block-code
    CustomLog /dev/null combined
    ```

hace que Apache no almacene el registro de accesos en un fichero.

Mientras que:

    ```wp-block-code
    ErrorLog /dev/null
    ```

hace que los errores de ese VirtualHost tampoco se almacenen.

En Linux, `/dev/null` es un dispositivo especial que descarta cualquier información
que se escriba en él.

## VirtualHost HTTPS

Si el sitio funciona mediante HTTPS, debemos aplicar la configuración también al
VirtualHost correspondiente al puerto 443.

Por ejemplo:

    ```wp-block-code
    <VirtualHost *:443>
        ServerName tudominio.com

        SSLEngine On

        CustomLog /dev/null combined
        ErrorLog /dev/null

        # Resto de configuración...
    </VirtualHost>
    ```

Es importante revisar que no tengamos un VirtualHost independiente para HTTP y otro
para HTTPS, ya que de lo contrario podríamos deshabilitar los logs de uno y continuar
registrando las peticiones del otro.

## Una opción más recomendable: conservar el ErrorLog

Aunque técnicamente podemos deshabilitar completamente los logs, en muchos casos**
no es recomendable eliminar también el registro de errores**.

Una alternativa más segura es desactivar únicamente el registro de accesos:

    ```wp-block-code
    <VirtualHost *:80>
        ServerName tudominio.com

        CustomLog /dev/null combined
        ErrorLog /var/log/apache2/tudominio-error.log

        # Resto de configuración...
    </VirtualHost>
    ```

De esta forma no tendremos un registro de cada petición HTTP, pero seguiremos disponiendo
de información si Apache encuentra un problema.

Esto puede ser especialmente útil en servidores de producción.

## Aplicar los cambios

Una vez modificado el VirtualHost, antes de reiniciar Apache es recomendable comprobar
que la configuración no contiene errores:

    ```wp-block-code
    apache2ctl configtest
    ```

Si todo es correcto, veremos:

    ```wp-block-code
    Syntax OK
    ```

A continuación podemos recargar la configuración sin detener Apache:

    ```wp-block-code
    systemctl reload apache2
    ```

También podemos utilizar:

    ```wp-block-code
    systemctl reload apache2.service
    ```

No es necesario reiniciar completamente el servidor web para este cambio.

## Comprobar qué VirtualHost está utilizando Apache

Si tenemos varios dominios configurados, puede ser útil comprobar cómo los está 
interpretando Apache:

    ```wp-block-code
    apache2ctl -S
    ```

Este comando muestra los VirtualHost configurados, incluyendo los puertos, dominios
y archivos de configuración asociados.

Por ejemplo, podríamos encontrar algo parecido a:

    ```wp-block-code
    *:80 is a NameVirtualHost
         default server ejemplo.com (/etc/apache2/sites-enabled/000-default.conf:1)
         port 80 namevhost ejemplo.com (/etc/apache2/sites-enabled/000-default.conf:1)
         port 80 namevhost tudominio.com (/etc/apache2/sites-enabled/tudominio.conf:1)
    ```

Esto resulta especialmente útil cuando tenemos muchos dominios configurados y queremos
localizar exactamente qué archivo debemos modificar.

## Localizar las directivas de logging

También podemos buscar todas las configuraciones de `CustomLog` y `ErrorLog`:

    ```wp-block-code
    grep -R "CustomLog\|ErrorLog" /etc/apache2/sites-enabled/ /etc/apache2/conf-enabled/
    ```

Esto permite detectar rápidamente si existe alguna configuración adicional que esté
generando logs.

Por ejemplo:

    ```wp-block-code
    /etc/apache2/sites-enabled/tudominio.conf:    CustomLog /var/log/apache2/tudominio-access.log combined
    /etc/apache2/sites-enabled/tudominio.conf:    ErrorLog /var/log/apache2/tudominio-error.log
    ```

## ¿Qué ocurre con los logs globales?

Hay que tener cuidado cuando Apache tiene configurados logs globales.

Por ejemplo, podemos encontrar en alguna configuración:

    ```wp-block-code
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    ```

Esta directiva puede hacer que Apache continúe registrando peticiones aunque hayamos
modificado el VirtualHost.

Por eso, cuando queremos asegurarnos de que **un VirtualHost concreto no genera 
registros**, es importante revisar tanto la configuración del propio VirtualHost
como las configuraciones globales de Apache.

Podemos localizar estas directivas mediante:

    ```wp-block-code
    grep -R "CustomLog\|ErrorLog" /etc/apache2/
    ```

## ¿Es buena idea deshabilitar los logs?

Depende del objetivo.

Los logs de Apache pueden ocupar bastante espacio en servidores con mucho tráfico.
Sin embargo, también proporcionan información muy valiosa para:

 * Diagnosticar errores.
 * Detectar ataques.
 * Analizar peticiones sospechosas.
 * Investigar problemas de rendimiento.
 * Saber qué URLs están siendo solicitadas.
 * Analizar errores HTTP 404, 403, 500, etc.

Por este motivo, antes de deshabilitarlos completamente es conveniente valorar alternativas
como **rotación de logs**, reducción del nivel de logging o conservar únicamente
el `ErrorLog`.

## Configuración recomendada

Si el objetivo es reducir considerablemente la cantidad de información almacenada,
una configuración equilibrada sería:

    ```wp-block-code
    <VirtualHost *:80>
        ServerName tudominio.com

        CustomLog /dev/null combined
        ErrorLog /var/log/apache2/tudominio-error.log

        # Configuración de la aplicación...
    </VirtualHost>
    ```

De esta manera dejamos de almacenar todas las peticiones pero mantenemos los errores
importantes.

Si realmente queremos que Apache **no escriba ningún log para ese VirtualHost**,
podemos utilizar:

    ```wp-block-code
    <VirtualHost *:80>
        ServerName tudominio.com

        CustomLog /dev/null combined
        ErrorLog /dev/null

        # Configuración de la aplicación...
    </VirtualHost>
    ```

Después:

    ```wp-block-code
    apache2ctl configtest
    systemctl reload apache2
    ```

## Conclusión

Apache2 permite controlar los registros de cada VirtualHost de forma independiente
mediante `CustomLog` y `ErrorLog`.

La opción más directa para deshabilitar completamente los logs es:

    ```wp-block-code
    CustomLog /dev/null combined
    ErrorLog /dev/null
    ```

Sin embargo, en servidores de producción suele ser más aconsejable **mantener al
menos el registro de errores**, ya que puede resultar fundamental para diagnosticar
problemas posteriormente.

Antes de aplicar cualquier cambio, conviene utilizar:

    ```wp-block-code
    apache2ctl -S
    ```

para identificar el VirtualHost correcto y:

    ```wp-block-code
    grep -R "CustomLog\|ErrorLog" /etc/apache2/
    ```

para comprobar si existen otras configuraciones de logging que puedan afectar al
resultado.
