У меня около 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"
Еще одна проблема, с которой я столкнулся:
- Между двойными кавычками и чертой не должно быть пробела.
"|$ ...
действует." |$ ...
не является.