É possível ter 2 logs de erros por VirtualHost no Apache?

É possível ter 2 logs de erros por VirtualHost no Apache?

Tenho cerca de 10 VirtualHosts e gosto de manter os error_logs separados. Recentemente, também preciso combinar todos os error_logs para algumas verificações do mod_security.

Se eu definir 2 ErrorLogs para um VirtualDomain de teste, percebo que nenhum erro está sendo registrado. Muito estranho.

É possível que um CustomLog desempenhe o papel de um ErrorLog?

Ou estou definindo meus 2 ErrorLogs incorretamente?

<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>

Responder1

Não, não é possível ter duas diretivas ErrorLog por VirtualHost. No entanto, você pode usar a capacidade do Apache de canalizar para um comando para registrar em dois (ou mais) arquivos usando o comando 'tee' do UNIX:

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

Responder2

De acordo comDocumentação de registros do Apache 2.4:

Por padrão, o processo de log canalizado é gerado sem invocar um shell. Use "|$" em vez de "|" para gerar usando um shell (geralmente com /bin/sh -c):

Este era o comportamento padrão do Apache 2.2.

Exemplo:

# 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"

Outro problema que encontrei:

  • Você não deve deixar espaço entre as aspas duplas e a barra.
    • "|$ ...é válido.
    • " |$ ...não é.

informação relacionada