My CakePHP 3.x 应用程序在 Heroku 上运行。在生产模式(debug => false
)下,Heroku日志中不会显示任何错误。我怀疑CakePHP试图将它们写入它自己的logs/error.log
但我认为没有办法在Heroku环境中访问它。我想我需要配置 CakePHP 以将错误发送到 STDOUT...然后希罗库会"看到"他们。如何在 CakePHP v3.x 中做到这一点?
这是我的配置文件的相关部分:
'Error' => [
'errorLevel' => E_ALL & ~E_DEPRECATED,
'exceptionRenderer' => 'Cake'Error'ExceptionRenderer',
'skipLog' => [],
'log' => true,
'trace' => true,
],
这个问题和我的完全一样,但对于 CakePHP 2.x。
这个 Heroku 文档也适用于 CakePHP 2.x。
这是关于日志记录的CakePHP文档,在这个问题上很模糊。
我尝试添加...
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 食谱使用 className 作为自己的示例。
这是我脑海中的占位符答案(虽然信息仍然新鲜),直到 NDM 提交一个......
To log errors to the console, add...
Log::config('default', [
'engine' => 'Console'
]);
。引导.php
这会导致在运行 heroku logs
时显示 PHP 错误。我犯的错误是信任 Heroku 插件 Logentries,这是一个用于查看日志的 GUI 工具。即使有上述内容,日志条目仍然没有显示任何PHP错误,但这是一个不同的问题。
可能相关:
在 Heroku文档的底部,它向您展示了如何将记录到自己文件(如 CakePHP)的应用程序与 Heroku 的黑魔法输出连接起来......它对我不起作用,但你的里程可能会有所不同。