2014-10-07 2 views
2

Я использую Symfony 2.0.Получить вывод команды Symfony и сохранить его в файле

Я создал команду в 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); 

но команда не заканчивается таким образом. :(

+0

Вы можете написать свой собственный класс «Применение» и реализовать свой писатель, который реализует «OutputInterface», вы можете увидеть что-то [здесь] (http://symfony.com/doc/2.0/cookbook/console/logging .html # позволяя-аВТОМАТИЧЕСКОЕ исключение каротажа) – Matteo

ответ

6

Вы можете просто переслать вывод команды с использованием стандартных методов оболочки с помощью php app/console your:command > output.log. Или, если это не вариант, вы можете ввести оболочку для OutputInterface, которая будет писать в поток, а затем переадресовывать вызовы в завернутый

Смежные вопросы