В моей 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");
}
}
Вы можете поместить чек на уровень детализации и написать вывод на основе этого, это возможное решение для вас (я могу отправить код, чтобы помочь с этим) – Rooneyl
@Rooneyl Я не хочу добавлять пользовательский вывод. Я хочу, чтобы grep существующий вывод многословности. Я предполагаю, что это больше связано с тем, как bash обрабатывает разные выходные потоки. Я скорее не решу это путем вывода кода. – k0pernikus