2016-06-01 2 views
0

В моей app/config/config.yml я добавил обработчик консоли для монолога:Как grep вывод verbosity в команде symfony2?

monolog: 
    handlers: 
     console: 
      type: console 

Так что, когда я передать флаг детальности -vvv, команда производит Outout из вызовов монолога, например:

./bin/console text:hello k0pernikus -vvv 
[2016-06-01 13:19:27] event.DEBUG: Notified event "console.command" to listener "Symfony\Component\HttpKernel\EventListener\DebugHandlersListener::configure". {"uid":"c1e943a"} 
[2016-06-01 13:19:27] event.DEBUG: Notified event "console.command" to listener "Symfony\Bridge\Monolog\Handler\ConsoleHandler::onCommand". {"uid":"c1e943a"} 
Ipsum lorem dolorem 
Hello k0pernikus! 
Ipsum lorem dolorem 

Теперь я хочу, чтобы вычленить информацию первой линии через

/bin/console text:hello k0pernikus -vvv | grep DebugHandlersListener::configure 

пока я получаю второй DEBUG тоже:

[2016-06-01 13:21:17] event.DEBUG: Notified event "console.command" to listener "Symfony\Component\HttpKernel\EventListener\DebugHandlersListener::configure". {"uid":"9e84992"} 
[2016-06-01 13:21:17] event.DEBUG: Notified event "console.command" to listener "Symfony\Bridge\Monolog\Handler\ConsoleHandler::onCommand". {"uid":"9e84992"} 

Я также заметил, что выход ведет себя странно, как я не могу перенаправить его:

./bin/console text:hello k0pernikus -vvv > fnord 
[2016-06-01 13:22:13] event.DEBUG: Notified event "console.command" to listener "Symfony\Component\HttpKernel\EventListener\DebugHandlersListener::configure". {"uid":"f21ef6f"} 
[2016-06-01 13:22:13] event.DEBUG: Notified event "console.command" to listener "Symfony\Bridge\Monolog\Handler\ConsoleHandler::onCommand". {"uid":"f21ef6f"} 

cat fnord 
Ipsum lorem dolorem 
Hello k0pernikus! 
Ipsum lorem dolorem 

Это, кажется, хотел поведение, но я немного запутался о том, как работать с выходом детальности , Меня не интересуют все строки, только в одном из них.

Как использовать grep для одной линии?


Моя команда:

<?php 
namespace Kopernikus\ApiBundle\Command; 

use Symfony\Component\Console\Command\Command; 
use Symfony\Component\Console\Input\InputArgument; 
use Symfony\Component\Console\Input\InputInterface; 
use Symfony\Component\Console\Output\OutputInterface; 

/** 
* PlainTextHelloWorldCommand 
**/ 
class PlainTextHelloWorldCommand extends Command 
{ 
    /** 
    * 
    */ 
    protected function configure() 
    { 
     $this 
      ->setName('text:hello') 
      ->addArgument('reciever', InputArgument::REQUIRED, 'Who do you want to greet?'); 
    } 


    /** 
    * @param InputInterface $input 
    * @param OutputInterface $output 
    * @return int|null|void 
    */ 
    protected function execute(InputInterface $input, OutputInterface $output) 
    { 
     $reciever = $input->getArgument('reciever'); 
     $output->writeln("Ipsum lorem dolorem"); 
     $output->writeln("Hello {$reciever}!"); 
     $output->writeln("Ipsum lorem dolorem"); 
    } 
} 
+0

Вы можете поместить чек на уровень детализации и написать вывод на основе этого, это возможное решение для вас (я могу отправить код, чтобы помочь с этим) – Rooneyl

+0

@Rooneyl Я не хочу добавлять пользовательский вывод. Я хочу, чтобы grep существующий вывод многословности. Я предполагаю, что это больше связано с тем, как bash обрабатывает разные выходные потоки. Я скорее не решу это путем вывода кода. – k0pernikus

ответ

1

found the solution I:

./bin/console text:hello k0pernikus -vvv 2>&1 >/dev/null | grep DebugHandlersListener::config 
[2016-06-01 13:56:11] event.DEBUG: Notified event "console.command" to listener "Symfony\Component\HttpKernel\EventListener\DebugHandlersListener::configure". {"uid":"885c2f6"} 

Проблема в том, что данные журнала не были записаны на стандартный вывод, но поток ошибок, а также.