Installation:
composer require moox/audit
php artisan mooxaudit:install
This runs migrations and publishes config/views automatically.
Prerequisites:
Ensure spatie/laravel-activitylog is installed (this package builds on it). If not, install it first:
composer require spatie/laravel-activitylog
First Use Case:
Activity::log())./audit (default route) to view logs.use Moox\Audit\Facades\Audit;
use Spatie\Activitylog\Models\Activity;
Activity::log('user.created', $user);
Audit::view(); // Redirects to the UI (if using Filament)
Logging Activities:
Activity::log() as usual. Moox Audit extends this with a Filament UI for visualization.use Spatie\Activitylog\LogOptions;
use Spatie\Activitylog\Traits\LogsActivity;
class User extends Model
{
use LogsActivity;
protected static $logAttributes = ['*'];
protected static $logOnlyDirty = true;
protected static $logName = 'user';
}
Integrating with Filament:
AppServiceProvider:
use Moox\Audit\AuditPanel;
public function boot()
{
Filament::registerPanel(
AuditPanel::make()
->id('audit')
->path('audit')
);
}
config/audit.php):
'panel' => [
'visible' => env('AUDIT_PANEL_VISIBLE', true),
'permissions' => ['view-audit-logs'],
],
Filtering and Search:
use Moox\Audit\Widgets\AuditFilters;
AuditFilters::make()
->addFilter(
Filament\Forms\Components\Select::make('log_type')
->options(['user.created', 'post.updated'])
);
Real-Time Updates:
use Moox\Audit\Facades\Audit;
Audit::log('user.suspended', $user)
->notifyAdmins(); // Hypothetical method (extend via events)
Missing Spatie Activity Log:
spatie/laravel-activitylog isn’t installed, the package won’t work. Install it first:
composer require spatie/laravel-activitylog
Filament Dependency:
/audit route will fail. Install Filament first:
composer require filament/filament
Migration Conflicts:
activity_log table, the mooxaudit:install command may fail. Run migrations manually:
php artisan vendor:publish --tag="audit-migrations"
php artisan migrate --path=/vendor/moox/audit/database/migrations
Permission Denied:
view-audit-logs permission (or adjust in config/audit.php).Logs Not Appearing:
Activity model is logging correctly:
Activity::query()->latest()->take(5)->get(); // Check raw logs
php artisan view:clear
UI Styling Issues:
resources or widgets:
Filament::serving(function () {
Filament::registerResourceViewModifications(
\Moox\Audit\Resources\AuditResource::class,
fn (Blueprint $blueprint) => $blueprint->modifyForm(fn (Form $form) => $form->schema([]))
);
});
Custom Log Types:
use Spatie\Activitylog\Traits\LogsActivity;
trait LogsCustomActivity
{
use LogsActivity;
protected static $logOnlyDirty = false;
protected static $logAttributes = ['custom_field'];
}
Adding Custom Columns:
use Moox\Audit\Resources\AuditResource;
class CustomAuditResource extends AuditResource
{
public static function table(Table $table): Table
{
parent::table($table);
$table->addColumns([
Tables\Columns\TextColumn::make('custom_field')
->label('Custom Data'),
]);
}
}
Exporting Logs:
use Filament\Tables\Actions\ExportAction;
AuditResource::table(function (Table $table) {
$table->actions([
ExportAction::make()
->label('Export Logs')
->filename('audit-logs-' . now()->format('Y-m-d')),
]);
});
Webhooks for Logs:
use Spatie\Activitylog\Events\Logged;
Logged::listen(function (Logged $event) {
if ($event->properties['log'] === 'user.suspended') {
// Send Slack alert
}
});
How can I help you explore Laravel packages today?