Apacheのアクセスログやエラーログだが、デフォルトではSyslogは経由しない。 これらをSyslogを使って管理する場合、httpd.confに設定の追加が必要になる。

設定自体は簡単で、CustomLog/ErrorLogの設定に対して、パイプで繋げてloggerでSyslogに流すだけだ。 以下、設定の記述例(VirtualHostとか設定してると記述先のファイルも変わるので、自分の環境に合わせて記述すること)。 CentOS 7で確認をしている。

/etc/httpd/conf/httpd.conf
CustomLog "|/usr/bin/logger -p local5.info -t httpd_access" combined ErrorLog "|/usr/bin/logger -p local6.info -t httpd_error"

次に、rsyslog側でログの出力先を設定する。 リモートに転送するのであればそのように記述してやればよい。

/etc/rsyslog.d/httpd.conf
local5.* /var/log/httpd/access_log local6.* /var/log/httpd/error_log

さらに、今の設定のままだと/var/log/messagesにも同様のログが出力されてしまうので、/etc/rsyslog.confでmessagesへのログ出力設定に追記をする。

*.info;mail.none;authpriv.none;cron.none;local5.none;local6.none;
                                                        /var/log/messages

以上で設定は完了。 あとは、サービスの再起動をして設定を適用すればよい。