| Package Data | |
|---|---|
| Maintainer Username: | bmitch |
| Maintainer Contact: | wkmitch@gmail.com (Bill Mitchell) |
| Package Create Date: | 2016-11-17 |
| Package Last Update: | 2016-12-10 |
| Language: | PHP |
| License: | MIT |
| Last Refreshed: | 2025-10-25 03:01:46 |
| Package Statistics | |
|---|---|
| Total Downloads: | 95 |
| Monthly Downloads: | 0 |
| Daily Downloads: | 0 |
| Total Stars: | 17 |
| Total Watchers: | 0 |
| Total Forks: | 3 |
| Total Open Issues: | 1 |
This package allows you to have events triggered by your Artisan Commands. The events available are:
Bmitch\ConsoleEvents\Events\CommandStarting
Triggered when an Artisan Command is starting.
Bmitch\ConsoleEvents\Events\CommandTerminating
Triggered when an Artisan Command is terminating.
The main reason I created this package was for a use case where multiple commands were executed nightly and I wanted an easy way to log when they started and stopped. By hooking into these events it makes it easy.
composer require bmitch/consoleevents
In any command that you wish to trigger these events simply replace the:
use Illuminate\Console\Command;
with
use Bmitch\ConsoleEvents\Command;
Create two listeners within the app/Listeners folder like this:
<?php
namespace App\Listeners;
use Log;
use Bmitch\ConsoleEvents\Events\CommandStarting;
class CommandStartingListener
{
/**
* Handle the event.
*
* @param CommandStarting $commandStartingEvent
* @return void
*/
public function handle(CommandStarting $commandStartingEvent)
{
$name = $commandStartingEvent->command->getName();
Log::info("Command {$name} starting");
}
}
<?php
namespace App\Listeners;
use Log;
use Bmitch\ConsoleEvents\Events\CommandTerminating;
class CommandTerminatingListener
{
/**
* Handle the event.
*
* @param CommandTerminating $commandTerminatingEvent
* @return void
*/
public function handle(CommandTerminating $commandTerminatingEvent)
{
$command = $commandTerminatingEvent->command;
$name = $command->getName();
Log::info("Command {$name} stopping", [
'commandName' => $name,
'executionTime' => $command->getExecutionTime(),
'exitCode' => $commandTerminatingEvent->exitCode,
]);
}
}
Then register it within the app\Providers\EventServiceProvider.php class:
/**
* The event listener mappings for the application.
*
* @var array
*/
protected $listen = [
'Bmitch\ConsoleEvents\Events\CommandStarting' => [
'App\Listeners\CommandStartingListener',
],
'Bmitch\ConsoleEvents\Events\CommandTerminating' => [
'App\Listeners\CommandTerminatingListener',
],
];
Run your command and check laravel.log. You should see an entry that was triggered by the CommandStartingListener.
Something like:
[2016-12-02 00:16:11] local.INFO: Command foo:bar starting
[2016-12-02 00:16:11] local.INFO: Command foo:bar stopping {"commandName":"foo:bar","executionTime":0.005375862121582,"exitCode":0}
The Bmitch\ConsoleEvents\Command class automatically tracks how long it takes to execute and provides a getExecutionTime() method to make it easy to add this data when Logging data.
Please see CONTRIBUTING.md
The MIT License (MIT). Please see License File for more information.