簡體   English   中英

如何在Heroku上捕獲生產CakePHP 3錯誤日志

[英]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,
],

這個問題與我的問題完全相同,但對於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環境的配置覆蓋文件中。 我不確定我們的示例之間的engineclassName區別。 當前的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM