Laravel Auditing: Cara Mudah Tracking Perubahan Data

Record the change log from models in Laravel

Laravel Auditing: Cara Mudah Tracking Perubahan Data

Deskripsi

Laravel Auditing adalah package yang memungkinkan Anda melacak perubahan pada model Eloquent dengan mudah. Package ini sangat berguna untuk aplikasi yang membutuhkan history log, audit trail, atau monitoring perubahan data.

Mengapa Menggunakan Laravel Auditing?

1. Kemampuan Tracking

  • Lacak semua perubahan pada model
  • Simpan data sebelum dan sesudah perubahan
  • Catat user yang melakukan perubahan
  • Timestamp otomatis
  • IP address tracking

2. Fitur Utama

  • Konfigurasi fleksibel
  • Audit queue support
  • Event & listener
  • Custom attribute
  • Thread safe
  • JSON output

3. Keunggulan

  • Integrasi mudah dengan Laravel
  • Performa optimal
  • Maintenance rendah
  • Dokumentasi lengkap
  • Komunitas aktif

Implementasi Dasar

1. Instalasi

composer require owen-it/laravel-auditing

2. Publish Config

php artisan vendor:publish --provider "OwenIt\Auditing\AuditingServiceProvider" --tag="config"

3. Setup Model

use OwenIt\Auditing\Contracts\Auditable;
use OwenIt\Auditing\Auditable as AuditableTrait;

class User extends Model implements Auditable
{
    use AuditableTrait;

    protected $auditEvents = [
        'created',
        'updated',
        'deleted',
        'restored'
    ];
}

Use Cases

1. Sistem Keuangan

  • Tracking transaksi
  • Perubahan saldo
  • History pembayaran
  • Approval flow

2. Manajemen Konten

  • Revisi artikel
  • Perubahan produk
  • Update kebijakan
  • Content moderation

3. User Management

  • Login history
  • Perubahan profil
  • Role changes
  • Permission updates

4. Data Sensitif

  • Medical records
  • Financial data
  • Personal information
  • Legal documents

Fitur Advanced

1. Custom Audit Output

protected $auditInclude = [
    'name',
    'email'
];

protected $auditExclude = [
    'password'
];

2. Audit Threshold

protected $auditThreshold = 100;

3. Custom Implementation

protected function transformAudit(array $data): array
{
    if ($data['event'] === 'updated') {
        // Custom logic
    }
    
    return $data;
}

Implementasi Praktis

1. Setup Database

Schema::create('audits', function (Blueprint $table) {
    $table->bigIncrements('id');
    $table->string('user_type')->nullable();
    $table->unsignedBigInteger('user_id')->nullable();
    $table->string('event');
    $table->morphs('auditable');
    $table->text('old_values')->nullable();
    $table->text('new_values')->nullable();
    $table->text('url')->nullable();
    $table->ipAddress('ip_address')->nullable();
    $table->text('user_agent')->nullable();
    $table->timestamps();
});

2. Retrieve Audit History

// Get all audits
$user->audits;

// Get latest audit
$user->latestAudit;

// Get first audit
$user->earliestAudit;

Kesimpulan

Laravel Auditing adalah solusi ideal untuk:

  • Tracking perubahan data
  • Compliance requirements
  • Security monitoring
  • Change management

Keunggulan utama:

  • Mudah diimplementasi
  • Fleksibel dan extensible
  • Performa optimal
  • Dokumentasi lengkap
Developer

O3 IT Solutions

Developer

3,240 Stars
401 Forks