pendonl / laravel-schedulelogger
记录 Laravel 中计划任务的执行时间
Requires
- php: >=5.6.0
Requires (Dev)
- phpunit/phpunit: ~5.0
This package is auto-updated.
Last update: 2020-05-22 14:54:29 UTC
README
此包自动记录 Laravel 中计划任务的执行时间。只需将默认的 Schedule 类替换为 LogSchedule 类,时间将默认保存到数据库中。
安装 & 使用
使用 composer 安装包
composer require pendonl/laravel-schedulelogger
将服务提供者和外观添加到 config/app.php 中。 (对于 Laravel 5.5 及以上版本,启用了自动发现)
'providers' => [
...
PendoNL\LaravelScheduleLogger\LaravelScheduleLoggerServiceProvider::class,
...
]
然后
'aliases' => [ ... 'LogSchedule' => PendoNL\LaravelScheduleLogger\Facade::class, ... ]
下一步是发布和运行迁移
php artisan vendor:publish --provider="PendoNL\LaravelScheduleLogger\LaravelScheduleLoggerServiceProvider" php artisan migrate
然后我们必须替换由事件使用的事件默认 Schedule 实例,为此我们需要编辑 app/Console/Kernel.php。在文件底部添加此方法
/** * Define the application's command schedule. * * @return void */ protected function defineConsoleSchedule() { if (App::environment('local', 'staging')) { $this->app->instance( 'Illuminate\Console\Scheduling\Schedule', $schedule = new \PendoNL\LaravelScheduleLogger\Console\Scheduling\LogSchedule ); } else { $this->app->instance( 'Illuminate\Console\Scheduling\Schedule', $schedule = new Schedule ); } $this->schedule($schedule); }
同时确保在 app/Console/Kernel.php 的顶部导入 App Facade
use App;
完成这些后,通过运行 php artisan schedule:run
测试设置,如果一切顺利,你将看不到错误,并且在你的数据库中 schedulelogs
表将填充 X 条记录。
你可以使用此命令 php artisan schedulelogger:clean
清理日志。或者添加以下计划作业
$schedule->command('schedulelogger:clean');
你可以指定要保留的日志数量。参数 days
是可选的,默认为 30 天,例如,仅保留上周的记录,命令将是
php artisan schedulelogger:clean 7
显示执行时间
要显示屏幕上的信息,你可以在控制器中导入模型
use PendoNL\LaravelScheduleLogger\Schedulelog;
之后,只需获取记录即可。LogSchedule Facade 有一个简单的方法可以返回以毫秒为单位的执行时间。以下是一个示例。
foreach(Schedulelog::take(10)->get() as $log) { $ms = LogSchedule::getExecutiontime($log); echo "Execution of command [$log->command_name] took [$ms] milliseconds"; }
致谢
安全
如果您发现任何安全问题,请通过电子邮件 joshua@pendo.nl 而不是使用问题跟踪器。
关于 Pendo
Pendo 是一家位于荷兰马斯特里赫特的网络开发公司。如果您愿意,可以 访问我们的网站。
许可
MIT 许可证(MIT)。有关更多信息,请参阅 许可文件。