如何在Symfony控制台中禁用命令的输出?

时间:2016-04-20 03:58:44

标签: php symfony magento symfony-console

我编写了一个模块,实际上是Magento 2中的自定义命令。显然,Magento 2控制台应用程序很自豪地由 Symfony控制台提供支持。我的注意事项是如何禁用Imports System.Collections.ObjectModel Class MainWindow Public Sub New() InitializeComponent() Rectangles = New ObservableCollection(Of RectangleGeometry) Rectangles.Add(New RectangleGeometry(New Rect(50, 50, 500, 100))) Rectangles.Add(New RectangleGeometry(New Rect(50, 50, 100, 500))) Rectangles.Add(New RectangleGeometry(New Rect(200, 200, 100, 100))) Rectangles.Add(New RectangleGeometry(New Rect(400, 400, 100, 100))) Rectangles.Add(New RectangleGeometry(New Rect(20, 20, 100, 100))) End Sub Public Property Rectangles As ObservableCollection(Of RectangleGeometry) End Class 对指定命令的输出?

例如:

$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.... 设置为true,此命令--quiet的输出仍然存在。

有什么想法吗?

3 个答案:

答案 0 :(得分:4)

正如评论中所回答的那样......虽然与@toooni的回答几乎完全相同。

您可以插入NullOutput而不是插入命令提供的实际输出对象。

use Symfony\Component\Console\Output\NullOutput;

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

答案 1 :(得分:1)

您可以使用BufferedOutput:

use Symfony\Component\Console\Output\BufferedOutput;

...

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

此处描述了用法: http://symfony.com/doc/current/cookbook/console/command_in_controller.html

答案 2 :(得分: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