alifcoder/activity-log

A simple action activity log package for Laravel.

Installs: 89

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 1

Forks: 1

Open Issues: 0

pkg:composer/alifcoder/activity-log

v1.1.9 2025-12-03 06:09 UTC

README

A simple, customizable Laravel package to log and store user activity across your application. Perfect for auditing, tracking changes, and monitoring actions within modules.

✨ Features

  • Logs authenticated user actions and request details
  • Stores activity in a dedicated activity_logs table
  • Supports parent-child log relationships
  • Customizable logging behavior
  • Easily extendable and minimalistic

πŸ“¦ Requirements

  • PHP >=8.2
  • Laravel ^11.0 || ^12.0

πŸš€ Installation

composer require alifcoder/activity-log

βš™οΈ Configuration & Migration

Publish the configuration and migration with:

php artisan vendor:publish --tag=activity-log

This will publish:

  • config/activity-log.php
  • database/migrations/xxxx_xx_xx_xxxxxx_create_activity_logs_table.php

Then run the migration:

php artisan migrate

πŸ§‘β€πŸ’» Usage

Logging a manual activity

ActivityLogger::log(new ActivityLogCreateDTO(
                log_type: 'custom',         // optional: log type
                user_id: 1,                 // optional: user_id
                url: 'http://example.com',  // optional: URL
                method: 'GET',              // optional: HTTP method
                request_body: '{}',         // optional: request body
                response_body: '{}',        // optional: response body
                ...                         // other parameters
        ));

πŸ”€ Logging for Specific Routes

If you want the activity logger to run only for selected routes, you may attach the middleware manually:

Route::post('/example', ExampleController::class)->middleware('activity_log');

πŸ” Encrypted Request & Response Storage

All logged request and response bodies are stored as encrypted files for maximum data protection.

To read an encrypted stored file:

use Alif\ActivityLog\Facades\FileStorage;

$content = FileStorage::readEncrypted($this->request_body);

πŸ”‘ Generating an Encryption Secret Key

Since request/response data is encrypted, the package requires a secret key.

Generate it using:

php artisan activity-log:generate-key

🌍 IP Address Details Sync

The package supports collecting additional information about user IP addresses, such as:

  • Country
  • City
  • Coordinates
  • ISP
  • ASN
  • and more

After installation, the package automatically registers a scheduled task:

php artisan activity-log:sync-ip-details

🧹 Pruning Old Logs

To automatically delete old or unnecessary logs, the package provides pruning support.

Add the following to your application's scheduler:

$schedule->command('model:prune', [
    '--model' => [Alif\ActivityLog\Models\ActivityLog::class],
])->daily();

🧱 Table Structure: activity_logs

Column Type Description
id UUID Primary key
parent_id UUID Link to parent log (optional)
log_type String Type of action (e.g. create)
user_id String Authenticated user ID
module String App module or context
route String Route name
url String Full URL accessed
model_id String Related model ID (optional)
model_type String Related model class (optional)
user_agent Text Browser/user-agent string
created_at DateTime When the log was created

🧹 Uninstall (Clean Up)

Run this command before removing the package:

php artisan activity-log:uninstall

It will:

  • Roll back the migration (calls down())
  • Delete related migration files
  • Remove the config file

Then remove the package:

composer remove alifcoder/activity-log

🀝 Contributing

Pull requests are welcome! For major changes, please open an issue first.

πŸͺͺ License

MIT License Β© Shukhratjon Yuldashev

πŸ“‘ Automatic Logging for All Requests

To log every request made to your Laravel application, you can use the provided middleware and HTTP macro.

βœ… 1. Register the Middleware

In your app/Http/Kernel.php, register the middleware globally or per group:

protected $middleware = [
    // ...
    \Alif\ActivityLog\Http\Middleware\ActivityLogMiddleware::class,
];

This will automatically log incoming HTTP requests, including route, URL, method, and user info.

βœ… 2. Log Outgoing HTTP Requests

The package extends Laravel’s Http client with a loggable() macro.

Example usage:

use Illuminate\Support\Facades\Http;

$response = Http::loggable()->get('https://example.com/api/data');

This logs outgoing HTTP calls made by your application.

🧩 Customization

You can customize what gets logged, ignored routes/methods, and the database connection via:

config/activity-log.php

πŸ“« Support

If you need help, feel free to contact Shukhratjon Yuldashev on Telegram.