У меня есть много виртуальных хостов, настроенных на веб-сервере, каждый из которых имеет свою собственную ошибку и журнал доступа. Соответствующие строки httpd.conf
примерно такие:
ErrorLog /var/log/httpd-error.log
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
CustomLog /var/log/httpd-access.log combined
NameVirtualHost *:80
<VirtualHost *:80>
ServerName myhost.com
ServerAlias www.myhost.com
DocumentRoot /var/www/myhost.com/htdocs
ErrorLog /var/www/myhost.com/log/error.log
CustomLog /var/www/myhost.com/log/access.log combined
</VirtualHost>
# ... many more VirtualHosts
В настоящее время я получаю несколько случайных ошибок в /var/log/httpd-error.log, но ничего не получаю в /var/log/httpd-access.log. Можно ли дублировать ВСЕ обращения и ошибки в общий лог-файл? Возможно ли это сделать без добавления новых записей в каждый VirtualHost?
У вас есть 2 варианта использования директивы ErrorLog http://httpd.apache.org/docs/2.2/mod/core.html#errorlog
1) Используйте syslog и обработайте дубликаты в [r] syslog.conf
2) Используйте pipe, отправьте запись журнала в приложение / скрипт и обработайте дублирование в этом приложении / скрипте.
источник
Строго ли необходим просмотр всех журналов доступа? Если ошибки фактически вызваны запросом vhost, в журнале ошибок vhost должно быть что-то записано. В этом случае, ls -t /var/www/*/log/error.log, чтобы определить, какой vhost является виновником, а затем просто посмотреть, что файл журнала доступа, кажется хорошим первым шагом для устранения ненужного чтения журнала. ,
источник