syamsoul/laravel-activity-logger
Logger facade/service) and decorator pattern (wraps existing logic without modifying core code).composer require).@logActivity or manual Logger::log() calls.activity_logs table (schema: id, user_id, activity, details, ip_address, created_at). Customizable via events.details field.spatie/laravel-activitylog, this lacks automatic masking of sensitive fields.shouldQueue)?log channel for filtering?Log::channel()) or spatie/laravel-activitylog (more features, higher adoption)?Log::info(), custom tables).composer require syamsoul/laravel-activity-logger
php artisan vendor:publish --provider="SoulDoit\ActivityLogger\ActivityLoggerServiceProvider"
php artisan migrate
config/activity-logger.php (e.g., log retention, excluded routes).use SoulDoit\ActivityLogger\Traits\LogActivity;
class UserController {
use LogActivity;
public function update(Request $request) {
$this->logActivity('user.updated', ['user_id' => auth()->id()]);
// ...
}
}
$logger = app(Logger::class);
$logger->log('command.ran', ['command' => 'order:allocate-bonus']);
namespace App\Http\Middleware;
use Closure;
use SoulDoit\ActivityLogger\Logger;
class LogActivityMiddleware {
public function handle($request, Closure $next) {
$logger = app(Logger::class);
$logger->log('route.accessed', ['route' => $request->route()->getName()]);
return $next($request);
}
}
public function test_command_logs_activity() {
$this->artisan('order:allocate-bonus')
->expectsOutput('Bonus allocated')
->assertExitCode(0);
$this->assertDatabaseHas('activity_logs', [
'activity' => 'command.ran',
'details' => json_encode(['command' => 'order:allocate-bonus']),
]);
}
pdo_mysql).spatie/laravel-permission for user_id resolution).password fields).Model::query()->where(...)->delete()).config/activity-logger.php.activity_logs table.Log facade.How can I help you explore Laravel packages today?