Как отключить вывод команды в консоли Symfony?

Я пишу модуль, фактически пользовательскую команду в Magento 2. Консольное приложение Magento 2 гордо работает на Консоль Symfony, очевидно. И мое беспокойство, как отключить выход из $output для указанной команды?

Например:

$setupUpgradeCommand = $this->getApplication()->find('setup:upgrade');

$setupUpgradeArguments = array(
'command' => 'setup:upgrade',
'--quiet' => true,
);

$setupUpgradeInput = new ArrayInput($setupUpgradeArguments);

$start = microtime(true);
$output->writeln('<info>Start upgrading module schemas...</info>');
$setupUpgradeCommand->run($setupUpgradeInput, $output);
$output->writeln('...............................<info>OK</info>');

// My long logic-code start from here....

К сожалению, даже я поставил --quiet в true, вывод этой команды setup:upgrade все еще там.

Есть идеи?

3

Решение

В ответ на комментарий .. хотя почти так же, как ответ @toooni.

Вы можете вставить NullOutput вместо вставки фактического выходного объекта, предоставленного командой.

use Symfony\Component\Console\Output\NullOutput;

$setupUpgradeCommand->run($setupUpgradeInput, new NullOutput());
4

Другие решения

Вы можете использовать BufferedOutput:

use Symfony\Component\Console\Output\BufferedOutput;

...

$setupUpgradeCommand->run($setupUpgradeInput, new BufferedOutput());

Использование описано здесь:
http://symfony.com/doc/current/cookbook/console/command_in_controller.html

1

Другой вариант — использовать регистратор и выбросить его на CLI, если вы об этом попросите. Вы можете прочитать больше об этом в этом (уже старом) новостном сообщении: http://symfony.com/blog/new-in-symfony-2-4-show-logs-in-console

Полный пример, где вы можете даже отформатировать вывод, взятый из поста:

services:
my_formatter:
class: Symfony\Bridge\Monolog\Formatter\ConsoleFormatter
arguments:
- "[%%datetime%%] %%start_tag%%%%message%%%%end_tag%% (%%level_name%%) %%context%% %%extra%%\n"
monolog:
handlers:
console:
type:   console
verbosity_levels:
VERBOSITY_NORMAL: NOTICE
channels: my_channel
formatter: my_formatter

Вы можете найти документацию здесь: http://symfony.com/doc/current/cookbook/logging/monolog.html

1
По вопросам рекламы [email protected]