【发布时间】:2014-07-30 13:03:38
【问题描述】:
我遇到了 PHP-FPM 将单个事件注册为多个事件的问题。以下面的堆栈跟踪为例:
[30-Jul-2014 05:38:50] WARNING: [pool www] child 11606 said into stderr: "NOTICE: PHP message: PHP Fatal error: Uncaught exception 'Zend_View_Exception' with message 'script 'new-layout.mobile.phtml' not found...."
[30-Jul-2014 05:38:50] WARNING: [pool www] child 11606 said into stderr: "Stack trace:"
[30-Jul-2014 05:38:50] WARNING: [pool www] child 11606 said into stderr: "#0 /usr/share/nginx/html/site.com/142-webapp/library/Zend/View/Abstract.php(884): Zend_View_Abstract->_script('new-layout.mobi...')"
[30-Jul-2014 05:38:50] WARNING: [pool www] child 11606 said into stderr: "#1 /usr/share/nginx/html/site.com/142-webapp/library/Zend/Layout.php(796): Zend_View_Abstract->render('new-layout.mobi...')"
[30-Jul-2014 05:38:50] WARNING: [pool www] child 11606 said into stderr: "#2 /usr/share/nginx/html/site.com/142-webapp/library/Zend/Layout/Controller/Plugin/Layout.php(143): Zend_Layout->render()"
[30-Jul-2014 05:38:50] WARNING: [pool www] child 11606 said into stderr: "#3 /usr/share/nginx/html/site.com/142-webapp/library/Zend/Controller/Plugin/Broker...."
如您所见,堆栈跟踪的每一行实际上都是一个具有自己时间戳的单独事件。当将日志转发到另一个服务进行分析时,这是有问题的,因为当每个堆栈跟踪应该被视为一个事件时,它都会被分解。目前我正在使用 Kibana 3,查看和管理堆栈跟踪是一场噩梦,因为每一行都是一个单独的事件,并且各个事件并不总是按时间顺序排列。
如何让 php-fpm 将每个堆栈跟踪注册为 one 事件?
【问题讨论】:
-
为什么错误首先输出到
stderr?我会configure PHP (e.g. over PHP-FPM) to use a dedicated error log,这对我来说看起来更干净。 -
您在上面看到的输出就是这样做的。
标签: nginx php kibana error-log