Рівні деталізації
Дата оновлення перекладу 2023-08-25
Рівні деталізації
Команди консолі мають різні рівні деталізації, які визначають повідомлення,
відображені у їхньому виведенні. За замовчуванням, команди відображають лише
найкорисніші повідомлення, але ви можете контролювати їх деталізацію за допомогою
опцій -q
та -v
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
# не виводити ніяких повідомлень (навіть повідомлення результатів команди)
$ php bin/console some-command -q
$ php bin/console some-command --quiet
# звичайна поведінка, опція не потрібна (відображати лише корисні повідомлення)
$ php bin/console some-command
# збільшити деталізацію повідомлень
$ php bin/console some-command -v
# відобразити також другорядні інформативні повідомлення
$ php bin/console some-command -vv
# відобразити всі повідомлення (корисно для налагодження помилок)
$ php bin/console some-command -vvv
Рівень деталізації також можна контролювати глобально для всіх команд за допомогою
змінної середовища SHELL_VERBOSITY
(опції -q
та -v
все одно мають перевагу
над значенням SHELL_VERBOSITY
):
????? ??????? | ???????? SHELL_VERBOSITY |
?????????? PHP-????????? |
---|---|---|
-q ??? --quiet |
-1 |
OutputInterface::VERBOSITY_QUIET |
(?????) | 0 |
OutputInterface::VERBOSITY_NORMAL |
-v |
1 |
OutputInterface::VERBOSITY_VERBOSE |
-vv |
2 |
OutputInterface::VERBOSITY_VERY_VERBOSE |
-vvv |
3 |
OutputInterface::VERBOSITY_DEBUG |
Існує можливість друкувати повідомлення у команді лише для визначеного рівня деталізації. Наприклад:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
// ...
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
class CreateUserCommand extends Command
{
// ...
public function execute(InputInterface $input, OutputInterface $output): int
{
$user = new User(...);
$output->writeln([
'Username: '.$input->getArgument('username'),
'Password: '.$input->getArgument('password'),
]);
// доступні методи: ->isQuiet(), ->isVerbose(), ->isVeryVerbose(), ->isDebug()
if ($output->isVerbose()) {
$output->writeln('User class: '.get_class($user));
}
// як варіант, ви можете передати рівень деталізації PHP-константи у writeln()
$output->writeln(
'Буде виведено лише у режимі verbose або вище',
OutputInterface::VERBOSITY_VERBOSE
);
return Command::SUCCESS;
}
}
Коли використовується рівень quiet, все виведення стримується, як як метод за замовчуванням write() повертає не виводячи нічого.
Tip
MonologBridge надає клас ConsoleHandler, який дозволяє вам відображати повідомлення у консолі. Це акуратніше, ніж огортати ваші виклики виведення в умови. Для прикладу використання у фреймворку Symfony, дивіться Як сконфігурувати Monolog так, щоб він відображав консольні повідомлення.
Tip
Якщо використовується рівень VERBOSITY_VERBOSE
або вище, виводиться весь
слід виключень у стеку.