PHPackages                             dwi-wijonarko/laravel-activity-logger - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Logging &amp; Monitoring](/categories/logging)
4. /
5. dwi-wijonarko/laravel-activity-logger

ActiveLibrary[Logging &amp; Monitoring](/categories/logging)

dwi-wijonarko/laravel-activity-logger
=====================================

Simple Laravel package for logging user activities with automatic tracking

1.1.0(5mo ago)01MITPHPPHP ^8.1|^8.2|^8.3

Since Dec 11Pushed 5mo agoCompare

[ Source](https://github.com/dwi-wijonarko/laravel-activity-logger)[ Packagist](https://packagist.org/packages/dwi-wijonarko/laravel-activity-logger)[ Docs](https://github.com/dwi-wijonarko/laravel-activity-logger)[ RSS](/packages/dwi-wijonarko-laravel-activity-logger/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (2)Dependencies (5)Versions (3)Used By (0)

Laravel Activity Logger
=======================

[](#laravel-activity-logger)

[![Latest Version on Packagist](https://camo.githubusercontent.com/bc22b3c519012dc4da5aad13d7c649e64031530db60f1e09473a1217e26f57ae/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6477692d77696a6f6e61726b6f2f6c61726176656c2d61637469766974792d6c6f676765722e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/dwi-wijonarko/laravel-activity-logger)[![Total Downloads](https://camo.githubusercontent.com/ce2398b4109c0276ea1228c203539d3324190ec5b4a46c216f8640d2844df944/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f6477692d77696a6f6e61726b6f2f6c61726176656c2d61637469766974792d6c6f676765722e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/dwi-wijonarko/laravel-activity-logger)

A simple and elegant Laravel package for logging user activities. Track all user actions including create, update, and delete operations with automatic logging.

Features
--------

[](#features)

- 🚀 **Auto Logging**: Automatically log model events using a simple trait
- 📝 **Manual Logging**: Fluent interface for custom activity logging
- 🔍 **Query Filters**: Easy querying by user, model, date range, etc.
- 💾 **Detailed Tracking**: Stores old and new values, IP address, user agent
- ⚙️ **Configurable**: Customize table name, ignored attributes, retention period
- 🎯 **Laravel 9-12 Support**: Compatible with latest Laravel versions

Installation
------------

[](#installation)

Install via Composer:

```
composer require dwi-wijonarko/laravel-activity-logger
```

Publish the config file:

```
php artisan vendor:publish --tag=activity-logger-config
```

Run migrations:

```
php artisan migrate
```

Usage
-----

[](#usage)

### Automatic Logging with Trait

[](#automatic-logging-with-trait)

Add the `Loggable` trait to any model you want to track:

```
use DwiWijonarko\ActivityLogger\Traits\Loggable;

class Post extends Model
{
    use Loggable;

    // Optional: customize log name
    protected $logName = 'posts';
}
```

Now all `created`, `updated`, and `deleted` events will be automatically logged!

### Manual Logging

[](#manual-logging)

Use the `activity()` helper for custom logs:

```
// Simple logging
activity()->log('User viewed dashboard');

// With subject model
activity()
    ->performedOn($post)
    ->log('Post was published');

// With causer (authenticated user by default)
activity()
    ->causedBy($user)
    ->performedOn($post)
    ->log('Admin featured this post');

// With custom properties
activity()
    ->performedOn($post)
    ->withProperties(['custom' => 'data', 'reason' => 'Featured'])
    ->log('Post was featured');

// With log name (for categorization)
activity()
    ->inLog('admin')
    ->performedOn($post)
    ->log('Post was reviewed');
```

### Querying Activity Logs

[](#querying-activity-logs)

```
use DwiWijonarko\ActivityLogger\Models\Activity;

// Get all activities
$activities = Activity::all();

// Get activities for a specific model
$postActivities = Activity::forSubject($post)->get();

// Get activities by a specific user
$userActivities = Activity::forCauser($user)->get();

// Filter by log name
$adminLogs = Activity::inLog('admin')->get();

// Filter by date range
$recentActivities = Activity::between(
    now()->subDays(7),
    now()
)->get();

// Combine filters
$activities = Activity::forCauser($user)
    ->inLog('posts')
    ->between(now()->subMonth(), now())
    ->latest()
    ->paginate(20);
```

### Accessing Log Data

[](#accessing-log-data)

```
$activity = Activity::first();

// Get the user who performed the action
$user = $activity->causer;

// Get the model that was affected
$subject = $activity->subject;

// Get changes (for update events)
$changes = $activity->getChanges();
$oldValues = $activity->getOldValues();

// Access properties
$customData = $activity->properties;
```

### Relationship Usage

[](#relationship-usage)

```
// In your User model
public function activities()
{
    return $this->morphMany(Activity::class, 'causer');
}

// In your Post model
public function activities()
{
    return $this->morphMany(Activity::class, 'subject');
}

// Usage
$user->activities; // All activities by this user
$post->activities; // All activities on this post
```

Configuration
-------------

[](#configuration)

Edit `config/activity-logger.php`:

```
return [
    // Enable/disable logging
    'enabled' => env('ACTIVITY_LOGGER_ENABLED', true),

    // Table name
    'table_name' => 'activity_logs',

    // Auto-delete logs older than X days
    'delete_after_days' => 90,

    // Attributes to ignore when logging updates
    'ignore_attributes' => [
        'password',
        'remember_token',
        'created_at',
        'updated_at',
    ],

    // Log authentication events
    'log_auth' => true,
];
```

Examples
--------

[](#examples)

### Blog Post Management

[](#blog-post-management)

```
class Post extends Model
{
    use Loggable;

    protected $logName = 'content';
}

// Activities are automatically logged
$post = Post::create(['title' => 'My Post', 'content' => '...']);
// Logs: "Created Post"

$post->update(['title' => 'Updated Title']);
// Logs: "Updated Post" with old and new values

$post->delete();
// Logs: "Deleted Post"
```

### Custom Admin Actions

[](#custom-admin-actions)

```
// When admin approves content
activity()
    ->inLog('admin')
    ->performedOn($post)
    ->causedBy($admin)
    ->withProperties(['status' => 'approved', 'notes' => 'Quality content'])
    ->log('Content approved by admin');
```

### User Activity Timeline

[](#user-activity-timeline)

```
// Display user's activity timeline
$activities = Activity::forCauser($user)
    ->latest()
    ->paginate(20);

foreach ($activities as $activity) {
    echo "{$activity->created_at}: {$activity->description}";
}
```

Testing
-------

[](#testing)

```
composer test
```

Changelog
---------

[](#changelog)

Please see [CHANGELOG](CHANGELOG.md) for more information on recent changes.

Contributing
------------

[](#contributing)

Contributions are welcome! Please feel free to submit a Pull Request.

Security
--------

[](#security)

If you discover any security-related issues, please email  instead of using the issue tracker.

Credits
-------

[](#credits)

- [Dwi Wijonarko](https://github.com/dwi-wijonarko)
- [All Contributors](../../contributors)

License
-------

[](#license)

The MIT License (MIT). Please see [License File](LICENSE) for more information.

###  Health Score

35

—

LowBetter than 80% of packages

Maintenance73

Regular maintenance activity

Popularity1

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity51

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

2

Last Release

153d ago

PHP version history (2 changes)1.0.0PHP ^8.0|^8.1|^8.2

1.1.0PHP ^8.1|^8.2|^8.3

### Community

Maintainers

![](https://www.gravatar.com/avatar/80eced302aeb4d8910ebcb22393a40e73dffe3a87a8d6a6133bae47b6b571c18?d=identicon)[dwi-wijonarko](/maintainers/dwi-wijonarko)

---

Top Contributors

[![dwi-wijonarko](https://avatars.githubusercontent.com/u/106038112?v=4)](https://github.com/dwi-wijonarko "dwi-wijonarko (4 commits)")

---

Tags

laraveltrackingactivityAuditlogger

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/dwi-wijonarko-laravel-activity-logger/health.svg)

```
[![Health](https://phpackages.com/badges/dwi-wijonarko-laravel-activity-logger/health.svg)](https://phpackages.com/packages/dwi-wijonarko-laravel-activity-logger)
```

###  Alternatives

[spatie/laravel-activitylog

A very simple activity logger to monitor the users of your website or application

5.8k45.4M309](/packages/spatie-laravel-activitylog)[spatie/laravel-health

Monitor the health of a Laravel application

85810.0M83](/packages/spatie-laravel-health)[yadahan/laravel-authentication-log

Laravel Authentication Log provides authentication logger and notification for Laravel.

416632.8k5](/packages/yadahan-laravel-authentication-log)[msonowal/laravel-auditor

A simple mongo activity logger to record various events of your laravel application

1030.2k1](/packages/msonowal-laravel-auditor)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
