Using syslog with nginx / php-fpm


Using syslog with nginx / php-fpm

我正在考虑迁移基于Apache的Drupal安装,但需要基于rsyslog的远程错误日志记录。 我们使用的是 Amazon EC2,error_log写入来来去去的实例的文件有点噩梦。 特别是,如果应用程序遇到PHP错误,我们需要在它们发生时立即看到它们。

假设我们使用的是nginx和php-fpm,如果我将以下内容放入fpm池定义中,它就可以工作:

error_log = /path/to/logs/error.log

因为如果我在 PHP 中这样做,它确实会转到/path/to/logs/error.log:

<?php
  error_log('send this to our log');
?>

但是如果我将池设置为

error_log = syslog

据我所知,输出根本没有任何地方。 至少,我还没有弄清楚 Ubuntu 上的 rsyslog.conf 配置,该配置将收到任何输入。

使用 nginx 和 php-fpm 时获得集中式错误日志记录的最佳方法是什么? 我使用的是 Ubuntu 11.10,其中包含 php5-fpm 和 nginx 的打包版本。

nginx在这里无关。 我会推荐Drupal的系统日志模块。 把它放在上面,然后一切都进入系统日志,这将进入看门狗,这也捕获PHP错误。

PHP 也有一个原生的 syslog() 函数。

如果您使用的是 syslog-ng,我认为您可以将普通的 php 日志路由到 syslog 中,但我从未听说过能够执行 error_log = syslog。