gpt4 book ai didi

laravel - 直接在 Laravel 中运行 artisan 命令时创建日志文件

转载 作者:行者123 更新时间:2023-12-03 17:28:41 25 4
gpt4 key购买 nike

我在 Kernel 中有这个命令类(class) :

/**
* Define the application's command schedule.
*
* @param \Illuminate\Console\Scheduling\Schedule $schedule
* @return void
*/
protected function schedule(Schedule $schedule)
{
$schedule->command('products:import')
->appendOutputTo(storage_path('logs/import.log'));
}

该方法创建一个名为 import.log 的文件。包含我在导入产品时添加的日志记录,并且工作正常。但我需要能够运行 php artisan products:import直接获取创建的文件,无需调用 schedule Kernel 中的方法类,或使用 php artisan schedule:run .

我也没有在文档中找到。我应该添加什么 php artisan products:import获取文件创建?

编辑:如果我运行 php artisan schedule:run ,日志文件因为 appendOutputTo(storage_path('logs/import.log')); 而被创建,但如果我运行 php artisan products:import直接,不会创建日志文件。我需要知道我应该添加什么到 php artisan products:import命令行使其在这种情况下也能工作。

最佳答案

覆盖 run method为您的命令和配置 $output流使用 StreamOutput而不是 ConsoleOutput .

use Symfony\Component\Console\Output\StreamOutput;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Illuminate\Console\Command;

class ImportCommand extends Command
{
function run(InputInterface $input=null, OutputInterface $output=null) {
$output = new StreamOutput(fopen(storage_path('logs/import.log'), 'a', false));
parent::run($input, $output);
}

function handle() {
echo "Do stuff";
}
}

关于laravel - 直接在 Laravel 中运行 artisan 命令时创建日志文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58183452/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com