我怎样才能在 heroku 日志上看到我的回声打印?

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

我有一个运行良好的免费 PHP heroku webapp。 (发送推送通知)。

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

echo 'sending push !!!' . PHP_EOL;

当我这样做时,我在 heroku 日志上看不到这些打印件

heroku --tail

知道为什么吗?

PHP 中的回显字符串不会显示在 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

希望这对您有进一步的帮助。

你只需write to 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,这实际上不会做任何事情。

如果你想将变量记录到 heroku 日志,你可以简单地使用以下命令。

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