【发布时间】:2016-05-02 15:13:15
【问题描述】:
我的 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'
]);
...到我的配置文件,但它不起作用。
【问题讨论】:
-
Syslog != Console。我没有 Heroku 经验,但是如果你想登录到php://stderr(这是 2.x 中的ConsoleLog所做的),那么你需要使用Console引擎。 -
@ndm 如果我用
Console替换Syslog我的方法是否正确? -
我会这么认为(鉴于“配置文件”你指的不是
config/app.php)。 -
@ndm 我们会处理的。我们使用一个主 app.config 文件并针对特定环境选择性地覆盖它。所以我的 sn-p 处于生产覆盖范围内。文档说要使用引导程序,但我不希望它适用于所有环境。这有意义吗?
-
一般来说是的。虽然我不会在配置文件中使用编程逻辑,但感觉有点奇怪,并且使交换配置文件格式有点麻烦。就个人而言,我正在使用特定于环境的引导程序,如有必要,这些引导程序会合并到其他配置中。
标签: php cakephp logging heroku