Я использую Symfony 2,0.
Я создал команду в Symfony и хочу взять ее вывод и записать в файл.
Все, что я хочу, это взять все, что написано в стандартном выводе (на консоли), и поместить его в переменную. Я имею в виду все, что отражено в команде, исключения, перехваченные в других файлах, вызываемые командой и так далее. Я хочу вывод как на экране, так и в переменной (для записи содержимого переменной в файл). Я сделаю запись в файле в конце execute()
метод команды.
Что-то вроде этого:
protected function execute(InputInterface $input, OutputInterface $output)
{
// some logic and calls to services and functions
echo 'The operation was successful.';
$this->writeLogToFile($file, $output???);
}
И в файле я хочу иметь:
[Output from the calls to other services, if any]
The operation was successful.
Не могли бы вы мне помочь?
Я попробовал что-то вроде этого:
$stream = $output->getStream();
$content = stream_get_contents($stream, 5);
но команда не заканчивается таким образом. 🙁
Вы можете просто переслать вывод команды, используя стандартные методы оболочки с php app/console your:command > output.log
, Или, если это не вариант, вы можете ввести оболочку для OutputInterface
это будет записывать в поток, а затем переадресовывать вызовы на упакованный вывод.
Других решений пока нет …