我有一个免费的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");