Laravel Activitylog
Uygulamanızdaki kullanıcı hareketlerini ve model değişikliklerini otomatik olarak loglayan denetim paketi.
Kurulum
Composercomposer require spatie/laravel-activitylog
Dokümantasyon & Kullanım
MarkdownSpatie Laravel Activitylog
Laravel Activitylog paketi, uygulamanızdaki kullanıcı aktivitelerini, oturum açma/kapama hareketlerini ve Eloquent modellerindeki ekleme, güncelleme ve silme (CRUD) işlemlerini otomatik veya manuel olarak veritabanında denetim (audit trail) günlüğü olarak kaydetmenizi sağlar.
Neden Tercih Edilmeli?
- Otomatik Model Günlüğü: Modeldeki hangi alanların (eski ve yeni değerleriyle) değiştiğini otomatik olarak tespit eder ve kaydeder.
- Aktör (Causer) İlişkisi: İşlemi gerçekleştiren kullanıcıyı (veya auth modelini) otomatik olarak log kaydıyla eşleştirir.
- Kolay Manuel Loglama:
activity()->log(...)akıcı arayüzü ile özel iş akışlarını anında kaydedebilirsiniz. - Log Temizleme Komutu: Belirli bir günden eski log kayıtlarını tek komutla temizleyen yerleşik Artisan aracına sahiptir.
- Performans & Esneklik: İstenmeyen hassas alanları (
password,remember_token) kolayca loglama dışı bırakabilirsiniz.
Kurulum
Composer ile paketi projenize dahil edin:
composer require spatie/laravel-activitylog
Migration ve yapılandırma dosyasını yayınlayıp çalıştırın:
php artisan vendor:publish --provider="Spatie\Activitylog\ActivitylogServiceProvider" --tag="activitylog-migrations"
php artisan migrate
php artisan vendor:publish --provider="Spatie\Activitylog\ActivitylogServiceProvider" --tag="activitylog-config"
Temel Kullanım
1. Model Değişikliklerini Otomatik Loglama
Modelinize LogsActivity trait'ini ekleyin ve getActivitylogOptions metodunu tanımlayın:
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Spatie\Activitylog\Traits\LogsActivity;
use Spatie\Activitylog\LogOptions;
class Order extends Model
{
use LogsActivity;
protected $fillable = ['status', 'total_amount', 'shipping_address'];
public function getActivitylogOptions(): LogOptions
{
return LogOptions::defaults()
->logOnly(['status', 'total_amount'])
->logOnlyDirty()
->dontSubmitEmptyLogs()
->useLogName('orders');
}
}
Model güncellendiğinde:
$order = Order::find(1);
$order->status = 'shipped';
$order->save();
// Arka planda otomatik olarak eski: 'processing', yeni: 'shipped' farkı kaydedilir.
2. Manuel Aktivite Kaydı Oluşturma
use Spatie\Activitylog\Models\Activity;
// Basit log kaydı
activity()->log('Kullanıcı şifre sıfırlama talebinde bulundu.');
// Detaylı log kaydı
activity()
->causedBy(auth()->user())
->performedOn($order)
->withProperties([
'ip' => request()->ip(),
'browser' => request()->userAgent(),
'action' => 'refund_initiated',
])
->log('Sipariş için iade süreci başlatıldı.');
3. Logları Sorgulama ve Görüntüleme
use Spatie\Activitylog\Models\Activity;
// Son 20 aktiviteyi getir
$latestActivities = Activity::with(['causer', 'subject'])
->latest()
->take(20)
->get();
// Belirli bir modelin geçmişi
$orderLogs = $order->activities;
foreach ($orderLogs as $activity) {
echo $activity->description;
echo $activity->causer?->name;
// Değişen nitelikler
print_r($activity->changes());
}
4. Eski Logları Temizleme
config/activitylog.php içinde belirlenen günden (varsayılan: 365 gün) eski kayıtları temizlemek için:
php artisan activitylog:clean
Paket Bilgileri
Diğer Paketler
TALL stack üzerine kurulu, zarif ve son derece genişletilebilir admin paneli ve CRUD yönetim aracı.
API oluşturmadan Vue, React veya Svelte bileşenlerini klasik Laravel controller ve view yapısıyla SPA olarak çalıştırmayı sağlayan adaptör.
PHP ve Laravel için popüler, güçlü, esnek görsel işleme, kırpma, filtreleme ve optimizasyon kütüphanesi.