¿Es posible tener 2 registros de errores por VirtualHost en Apache?

¿Es posible tener 2 registros de errores por VirtualHost en Apache?

Tengo alrededor de 10 VirtualHosts y me gusta mantener los registros de errores separados. Recientemente, también necesito tener todos los errores_logs combinados para realizar algún escaneo de mod_security.

Si defino 2 ErrorLogs para un dominio virtual de prueba, noto que no se registra ningún error. Bastante extraño.

¿Es posible que un CustomLog desempeñe el papel de un ErrorLog?

¿O estoy definiendo mis 2 ErrorLogs incorrectamente?

<VirtualHost 1.2.3.4:80>
    ServerName mydomain.net
    ServerAlias www.mydomain.net mydomain.net
    DocumentRoot /var/www/html/mydomain
    ServerAdmin [email protected]
    UseCanonicalName Off

    ErrorLog logs/mydomain.net-error_log
    ErrorLog logs/unified_modsecurity-error_log

    CustomLog logs/mydomain.net-access_log combined
    UserDir disabled
    UserDir enabled mydomainuser
</VirtualHost>

Respuesta1

No, no es posible tener dos directivas ErrorLog por VirtualHost. Sin embargo, puede utilizar la capacidad de Apache para canalizar un comando para iniciar sesión en dos (o más) archivos utilizando el comando 'tee' de UNIX:

Registro de errores "|/usr/bin/tee -a /var/log/apache/error-1.log /var/log/apache/error-2.log"

Respuesta2

De acuerdo con laDocumentación de registros de Apache 2.4:

De forma predeterminada, el proceso de registro canalizado se genera sin invocar un shell. Utilice "|$" en lugar de "|" para generar usando un shell (generalmente con /bin/sh -c):

Este era el comportamiento predeterminado para Apache 2.2.

Ejemplo:

# Write to files error-1.log and error-2.log, and echo to stdout
CustomLog "|$/usr/bin/tee -a /var/log/apache/error-1.log /var/log/apache/error-2.log"

Otro problema con el que me encontré:

  • No debe haber un espacio entre las comillas dobles y la barra.
    • "|$ ...es válida.
    • " |$ ...no es.

información relacionada