打印/保存完整的Laravel Artisan命令输出调试行中的大数组到文件

问题描述

我正在Laravel 6.x项目中工作,我在Artisan命令中添加了调试行,以将从该行生成的大型数组转换为文本文件作为输出

看起来几乎像上述命令的handle方法中的以下代码

....
if(!$dataArray->isEmpty())
{
    foreach ($dataArr as $dataEle)
    {
        $dataArrToPrnt[] = $dataEle->toArray();
        ....
    }
}
die(var_dump($dataArrToPrnt));
....

但是问题是dataArray很大,因此在输入很少的内容之后,命令输出将跳过其余数据并打印(...more elements)

我正在运行以下命令以打印到文件(Windows 10 x64使用GitBash,因此我使用PHP.exe而不是PHP):

PHP.exe artisan command-namespace:command >> result.out

我如何覆盖/避免这种情况发生,并将完整的dataArray打印到文件中,而不管其大小如何?

解决方法

尝试使用全局日志。将日志记录通道添加到您的config / logging.php文件中,如下所示:

'dataLogger' => [
    'driver' => 'daily','path' => storage_path('logs/data.log'),'level' => 'info',],

并在您的代码中使用,例如:

use Log; 
foreach ($dataArr as $dataEle){
    Log::channel('dataLogger')->info($dataEle);
}

(或者您想格式化数据。)