我的 CakePHP 3.x 应用程序在 Heroku 上运行。在生产模式下 (debug => false
),Heroku 日志中不会显示任何错误。我怀疑 CakePHP 正试图将它们写入它自己的 logs/error.log
但我认为没有办法在 Heroku 环境中访问它。我想我需要配置 CakePHP 以将错误发送到 STDOUT...然后 Heroku 将“看到”它们。我如何在 CakePHP v3.x 中做到这一点?
这是我的配置文件的相关部分:
'Error' => [
'errorLevel' => E_ALL & ~E_DEPRECATED,
'exceptionRenderer' => 'Cake\Error\ExceptionRenderer',
'skipLog' => [],
'log' => true,
'trace' => true,
],
This question与我的完全相同,但适用于 CakePHP 2.x。
This Heroku documentation也适用于 CakePHP 2.x。
这是 CakePHP documentation on logging这在这件事上含糊不清。
我尝试添加...
use Cake\Log\Log;
Log::config('default', [
'engine' => 'Syslog'
]);
...到我的配置文件,但没有用。
最佳答案
这是我们结束的地方:
# Configure all logs for Heroku.
foreach (array_keys(Configure::read('Log')) as $log) {
Configure::write("Log.$log.className", 'Console');
}
这将 emersonthis 的解决方案应用于每个配置的日志。我们将它放在 Heroku 环境的配置覆盖文件中。我不确定我们示例中 engine
与 className
的区别。当前的 CakePHP 3 食谱 uses className对于它自己的例子。
关于php - 如何在 Heroku 上捕获生产 CakePHP 3 错误日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35007370/