Возможно ли иметь 2 журнала ошибок на каждый VirtualHost в Apache?

Возможно ли иметь 2 журнала ошибок на каждый VirtualHost в Apache?

У меня около 10 VirtualHosts, и мне нравится хранить error_logs отдельно. Недавно мне также нужно было объединить все error_logs для сканирования mod_security.

Если я определяю 2 ErrorLogs для тестового VirtualDomain, я замечаю, что ошибки не регистрируются. Довольно странно.

Возможно ли, чтобы CustomLog играл роль ErrorLog?

Или я неправильно определяю свои 2 ErrorLogs?

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

решение1

Нет, невозможно иметь две директивы ErrorLog на VirtualHost. Однако вы можете использовать возможность Apache передавать команду по конвейеру, чтобы вести журнал в двух (или более) файлах с помощью команды UNIX 'tee':

ErrorLog "|/usr/bin/tee -a /var/log/apache/error-1.log /var/log/apache/error-2.log"

решение2

СогласноДокументация по журналам Apache 2.4:

По умолчанию процесс конвейерного журнала запускается без вызова оболочки. Используйте "|$" вместо "|" для запуска с использованием оболочки (обычно с /bin/sh -c):

Это было поведение по умолчанию для Apache 2.2.

Пример:

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

Еще одна проблема, с которой я столкнулся:

  • Между двойными кавычками и чертой не должно быть пробела.
    • "|$ ...действует.
    • " |$ ...не является.

Связанный контент