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.