如何在 heroku 日志上看到我的回声打印


How can i see my echo prints on the heroku logs?

我有一个免费的PHP heroku网络应用程序,运行良好。(发送推送通知)。

当我像这样从 PHP 应用程序中打印时:

echo 'sending push !!!' . PHP_EOL;

当我这样做时,我没有在 heroku 日志上看到这些印刷品

heroku --tail

知道为什么吗?

你只需写信给stderr

file_put_contents("php://stderr", "sending push !!!".PHP_EOL);

或者,如果您使用的是 Monolog:

use Monolog'Logger;
use Monolog'Handler'StreamHandler;
$log = new Logger('yourlogger');
$log->pushHandler(new StreamHandler('php://stderr', Logger::DEBUG));
$log->addNotice('sending push !!!');

不要使用特定的日志文件路径或LOG_PATH,这实际上不会执行任何操作。

PHP 中的 echo'd 字符串不会显示在 Heroku 日志中,您需要做的是创建一个单独的日志文件来保存所有日志记录。我不知道你是否使用任何日志记录机制,甚至是PHP框架。

如果您还没有任何日志机制,可以查看:https://github.com/Seldaek/monolog 。它是PHP写出日志的即插即用模块。

use Monolog'Logger;
use Monolog'Handler'StreamHandler;
// create a log channel
$log = new Logger('name');
$log->pushHandler(new StreamHandler('debug.log', Logger::WARNING));
// add records to the log
$log->addWarning('Foo');
$log->addError('Bar');

安装后,您可以在 heroku 中设置一个环境变量以将 heroku 分配给日志文件。

heroku config:set LOG_PATH=/set/to/your/log/file

希望这会进一步帮助您。

如果要将变量记录到 heroku 日志中,只需使用以下命令即可。

$some_value=2;
file_put_contents("php://stderr", "$some_value'n");