在 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()-visVeryVerbose()-vvisDebug()-vvv 谢谢!我只是使用$isVerbose = $this->option("verbose");,它保持超级简单(只需在需要的地方检查一个布尔变量)。

以上是关于在 Laravel artisan 命令中使用详细的主要内容,如果未能解决你的问题,请参考以下文章

无法通过 artisan 命令运行迁移

如何在代码 Laravel 中使用 Artisan 命令?

Laravel自定义artisan命令在Sell中运行

Laravel 的Artisan 命令学习

用于清除 Laravel 中所有会话数据的 Artisan 命令

在 laravel 5 中运行 artisan 命令