在Laravel中获取控制台输出
问题描述:
我需要捕获通过电子邮件发送的控制台命令的输出以及请求时。我怎样才能做到这一点?在Laravel中获取控制台输出
如何从以下$this->info()
调用中获得输出?
$r = processData();
$this->info("\nSubmitted data:");
$this->info("SubmissionId: " . $r['submission_id']);
$this->info("Status: " . $r['status']);
答
决定用一个简单的回显命令和输出缓冲区控件替换$this->info()
调用。在控制台中看起来不错,并捕获请求发送电子邮件的数据。
例子:
$r = processData();
if ($this->option('email-results'))
ob_start();
echo "\nSubmitted data:";
echo "\nSubmissionId: " . $r['submission_id'];
echo "\nStatus: " . $r['status'];
if ($this->option('email-results')) {
mail(
$this->option('email-results'),
'Results on ' . $start_time->toDateTimeString(),
ob_get_contents()
);
ob_end_flush();
}
+0
我解决了它只是重写信息方法和跟踪本地受保护的缓冲区,但仍然调用控制台日志记录的'parent :: info()'。 '$ this-> buffer。= $ data。 “\ n”;父::信息($的数据);' – tomvo 2015-02-19 09:17:40
确实[这个答案](http://stackoverflow.com/a/20111569/1903366)帮助? – lukasgeiter 2014-11-14 18:20:00
@lukasgeiter不幸的是,它并不是因为我需要从执行命令本身捕获控制台输出的特定段。解决方案是从外部调用命令并捕获输出。不知道我会如何适应它(我尝试过)。 – eComEvo 2014-11-14 18:25:39
好的。你可以在你的命令中覆盖'info'方法(或者如果你经常需要一个新的命令基类),然后将它保存在那里。这是一个选择吗? – lukasgeiter 2014-11-14 18:30:47