[英]How to capture production CakePHP 3 error logs on 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,
],
這個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 cookbook 使用className作為自己的例子。
這是一個占位符答案(雖然信息仍然很新鮮)在我看來,直到NDM提交一個......
To log errors to the console, add...
Log::config('default', [
'engine' => 'Console'
]);
...到bootstrap.php
這會導致在運行heroku logs
時出現PHP錯誤。 我犯的錯誤是信任Heroku addon Logentries,這是一個用於查看日志的GUI工具。 即使有上述原因,Logentries仍然沒有顯示任何PHP錯誤,但這是一個不同的問題。
可能相關:
在Heroku文檔的底部,它向您展示如何使用Heroku的黑魔法輸出連接記錄到他們自己的文件(如CakePHP)的應用程序...它對我不起作用,但您的milage可能會有所不同。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.