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

Журнал Apache в один файл для нескольких доменов с помощью logrotate

Я хотел бы решить мою проблему, когда у меня есть сотни доменов на сервере Apache. Мне не нужен отдельный файл журнала для каждого домена, я хочу, чтобы они делились файлом журнала. Это достаточно просто, если мне не нужно их вращать. Например, я могу использовать

CustomLog "/var/log/apache2/access_log" "%h %v %l %u %t \"%r\" %>s %b"
ErrorLog "/var/log/apache2/error_log"

Это работает нормально, но я использовал это и заметил, что мой файл журнала 6 ГБ. Поэтому я хочу, чтобы файлы журналов чередовались с программой Rotatelogs Apache. Поэтому я попытался добавить ротацию на один из моих виртуальных хостов.

CustomLog '|/usr/sbin/rotatelogs "/var/log/apache2/access_log" 604800 0' "%h %v %l %u %t \"%r\" %>s %b"

Проблема заключалась в том, что он добавил некоторые числа после access_log, чтобы другие домены не записывали в тот же файл, что и повернутый. Есть ли способ сделать так, чтобы все домены записывались в один и тот же файл и его ротацию? если я введу ротацию журнала для всех виртуальных хостов, будет ли он использовать один и тот же файл или каждый домен перезапишет файл? Что мне делать с 6GB access_log?

В конце концов, ответ был ...

Чтобы использовать глобальное ведение журнала вместо ведения журнала для каждого виртуального хоста. Я закомментировал все настраиваемые журналы и журналы ошибок с виртуальных хостов, а затем в httpd.conf добавил

CustomLog '|/usr/sbin/rotatelogs "/var/log/apache2/access_log.%Y-%m-%d" 604800 0' "%h %v %l %u %t \"%r\" %>s %b"

ErrorLog '|/usr/sbin/rotatelogs "/var/log/apache2/error_log.%Y-%m-%d" 604800 0'

Это сработало