我有一个免费的PHP heroku webapp运行良好。 (发送推送通知)。
当我在PHP应用程序中打印时:
echo 'sending push !!!' . PHP_EOL;
当我做
时,我在heroku日志上看不到这些打印件heroku --tail
任何想法为什么?
答案 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");