Hosmel Quintana
Laravel Audit Logs
Introduction
Installation
Configuration
Basic usage
Recording Audit Logs
Actors and Targets
Querying Audit Logs
Testing Audit Logs
Advanced usage
Batching and Correlating Logs
Customizing the Audit Log Model
View on GitHub

Actors and Targets

Describe who performed an event and which resources it affected.

Actors identify who performed an event. Targets identify the resources affected by it.

Define identities inline

Pass a type and ID directly when the identity is only needed for one log. Names and metadata are optional:

php
use function HosmelQ\AuditLog\audit_log;

audit_log('document.published')
    ->actor(type: 'user', id: 'member_123', name: 'Jane Doe')
    ->target(
        type: 'document',
        id: 'doc_123',
        metadata: ['visibility' => 'public'],
    )
    ->record();

An ID is required for every inline actor or target. Call target() repeatedly when an event affects multiple resources.

Reuse application objects

Implement HasAuditLogIdentity when a model or value object should define its audit identity once:

php
use HosmelQ\AuditLog\Contracts\HasAuditLogIdentity;
use HosmelQ\AuditLog\Support\AuditLogIdentity;
use Illuminate\Database\Eloquent\Model;

class User extends Model implements HasAuditLogIdentity
{
    public function auditLogIdentity(): AuditLogIdentity
    {
        return new AuditLogIdentity(
            id: $this->id,
            name: $this->email,
            type: $this->getMorphClass(),
        );
    }
}

Pass the object directly to actor() or target():

php
use function HosmelQ\AuditLog\audit_log;

audit_log('auth.sessions.delete')
    ->actor($user)
    ->target($organization)
    ->tenant($organization->id)
    ->record();

AuditLogIdentity accepts a string or integer ID, a string or backed-enum type, optional metadata, and an optional display name.

Recording Audit LogsQuerying Audit Logs