У меня есть сервер Apache httpd 2.2. Я хочу регистрировать все сообщения с помощью системного журнала, чтобы запросы отправлялись на наш центральный сервер системного журнала. Я также хочу убедиться, что все сообщения журнала отправляются на локальный диск, чтобы системный администратор мог легко получить доступ к файлам журнала в локальной системе.
Журналы доступа HTTP легко отправлять как на локальный диск, так и в системный журнал. Один из распространенных методов:
LogFormat "%V %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
CustomLog logs/access_log combined
CustomLog "|/usr/bin/logger -t httpd -i -p local4.info" combined
Но для журналов ошибок это сделать непросто. Следующая конфигурация не работает, поскольку в журналах ошибок используется только последний раздел ErrorLog. Первая строка ErrorLog игнорируется.
ErrorLog logs/error_log
ErrorLog syslog:local4.error
Как я могу гарантировать, что журналы ошибок Apache записываются на локальный диск и отправляются в системный журнал?
Можно ли это сделать не трогая /etc/syslog.conf
? Я в порядке, если мои пользователи хотят управлять своими собственными файлами конфигурации Apache, но я не хочу, чтобы они касались системных файлов, таких как /etc/syslog.conf
Ты можешь использовать:
ErrorLog "| tee -a /var/log/httpd/error_log | /usr/bin/logger -t httpd -i -p local4.error"
делать то, что вам нужно.
Попробуйте отправить весь ErrorLog в канал, например сценарий perl. Этот сценарий Perl может направлять в системный журнал и на локальный диск.