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

时间:2015-01-05 10:38:27

标签: php heroku

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

当我在PHP应用程序中打印时:

echo 'sending push !!!' . PHP_EOL;

当我做

时,我在heroku日志上看不到这些打印件
heroku --tail

任何想法为什么?

3 个答案:

答案 0 :(得分:1)

您只需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,它实际上什么都不做。

答案 1 :(得分:0)

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

希望这会对你有所帮助。

答案 2 :(得分:0)

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

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