php - 如何在 Heroku 上捕获生产 CakePHP 3 错误日志

标签 php cakephp logging heroku

我的 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 环境的配置覆盖文件中。我不确定我们示例中 engineclassName 的区别。当前的 CakePHP 3 食谱 uses className对于它自己的例子。

关于php - 如何在 Heroku 上捕获生产 CakePHP 3 错误日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35007370/

相关文章:

php - Laravel Eloquent 如何返回一对多对多集合

cakephp - CakeLog 不会在 Shell 中写入 debug.log

php - MySQL,对 id 相同的多行进行分组

php - 使用 LIKE 查询 MySQL 范围

PHP: fatal error :调用未定义的方法

mysql - CakePHP 3,计数/分组查找结果?

javascript - 将不同的 PHP 变量传递给模态并在表单输入中显示

tomcat - 如何将日志从 tomcat docker 容器发送到 catalina.out?

java - 推荐用于 Java、Hibernate 和 Spring 的记录器

matlab - 使用 Matlab 串口实现 2 赫兹数据记录