在 Laravel artisan 命令中使用详细
Posted
技术标签:
【中文标题】在 Laravel artisan 命令中使用详细【英文标题】:Using verbose in Laravel artisan commands 【发布时间】:2015-02-21 01:19:54 【问题描述】:有没有办法检测用户在创建自定义工匠命令时指定的详细级别?我在文档中没有看到任何关于它的内容。
【问题讨论】:
【参考方案1】:您可以根据文档使用不同的详细程度:
https://laravel.com/api/6.x/Illuminate/Console/OutputStyle.html#method_isQuiet
isQuiet() - no verbosity is set (no option set)
isVerbose() - if the level is quiet or verbose (-v)
isVeryVerbose() - if the level is very verbose, verbose or quiet (-vv)
isDebug() - if the level is debug, very verbose, verbose or quiet (-vvv)
例如在你的命令$this->getOutput()->isQuiet()
这也会影响writeLn()
。如果您要编写 $this->line('Serious message', null, 'vv');
,则该消息将出现在 -vv
和 -vvv
选项中,但不会出现在 -v
和静默模式下,因为对于这些级别的日志记录来说“过于详细”。
【讨论】:
【参考方案2】:Symfony\Component\Console\Output\OutputInterface
中有getVerbosity()
函数,您可以使用$this->getOutput()
检索输出对象。
$verbosityLevel = $this->getOutput()->getVerbosity();
然后您可以将级别与OutputInterface
中定义的常量进行比较。例如:
if($verbosityLevel >= OutputInterface::VERBOSITY_VERBOSE)
// show verbose messages
【讨论】:
不错!我会试一试。我还发现 $this->option('verbose') 可以为您提供一个简单的布尔值。 (但是,它不包括 -v 与 -vvv) 酷不知道option('verbose')
你也可以使用$this->output->isVerbose()
api.symfony.com/3.1/...。 isVerbose()
是 -v
,isVeryVerbose()
是 -vv
,isDebug()
是 -vvv
。
谢谢!我只是使用$isVerbose = $this->option("verbose");
,它保持超级简单(只需在需要的地方检查一个布尔变量)。以上是关于在 Laravel artisan 命令中使用详细的主要内容,如果未能解决你的问题,请参考以下文章