Назад | Перейти на главную страницу

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

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

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

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

Или я неправильно определяю свои 2 журнала ошибок?

<VirtualHost 1.2.3.4:80>
    ServerName mydomain.net
    ServerAlias www.mydomain.net mydomain.net
    DocumentRoot /var/www/html/mydomain
    ServerAdmin not@available.com
    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>

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

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

Согласно Документация по журналам 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"

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

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