heccubernny/activity-tracker
最新稳定版本:v1.0.2
Composer 安装命令:
composer require heccubernny/activity-tracker
包简介
A lightweight Laravel package to track user and model activities
README 文档
README
⚠️ Note: This package is currently in development and not yet production-ready. Some bugs and issues may still exist. Use at your own risk.
A lightweight Laravel package to track user and model activities for web and API applications.
This package allows you to automatically track model events (created, updated, deleted) and route visits, as well as manually log custom activities. It supports both JWT-based API authentication and web session authentication.
Installation
Install via Composer:
composer require heccubernny/activity-tracker
Publish configuration and migrations:
php artisan vendor:publish --provider="Heccubernny\ActivityTracker\ActivityServiceProvider" --tag="activitytracker-config" php artisan vendor:publish --provider="Heccubernny\ActivityTracker\ActivityServiceProvider" --tag="activitytracker-migrations" php artisan migrate
Middleware Setup
Register the middleware in app/Http/Kernel.php:
protected $routeMiddleware = [ // ... 'activity.log' => \Heccubernny\ActivityTracker\Middleware\LogRouteActivity::class, ];
Apply middleware to routes:
Route::get('/dashboard', function () { // ... })->middleware('activity.log:visited-dashboard');
You can optionally pass a subject (model) to associate with the activity:
Route::get('/posts/{post}', function (App\Models\Post $post) { // ... })->middleware(\Heccubernny\ActivityTracker\Middleware\LogRouteActivity::class.':view-post,' . $post->id);
Automatic Model Logging
Add the LogsActivity trait to any model you want to track:
use Heccubernny\ActivityTracker\Traits\LogsActivity; class Post extends Model { use LogsActivity; }
By default, it tracks:
-
created
-
updated
-
deleted
and logs:
-
subject_id
-
subject_type
-
user_id
-
user_type
-
description
-
properties (full model attributes)
-
ip_address, url, method, agent
Manual Logging
Use the activity() facade for custom events:
activity()->log([ 'name' => 'exported-report', 'description' => 'User exported the monthly sales report', 'properties' => ['report' => 'monthly-sales'], // Optional: user_id, user_type, subject_id, subject_type ]);
or directly on a model
$post->logActivity('published', ['description' => 'Published via admin panel']);
Configuration (Optional)
You can set the activity retention in your .env:
ACTIVITY_RETENTION_DAYS=null
-
nullkeeps logs forever. -
Set to a number of days to automatically purge old logs.
Example Usage
Manual logging:
activity()->log([ 'name' => 'exported-report', 'description' => 'User exported the monthly sales report', 'properties' => ['report' => 'monthly-sales'], ]);
Automatic model logging:
$post = Post::find(1); $post->logActivity('published', ['description' => 'Published via admin panel']);
Route-based logging:
Route::get('/dashboard', function () { // ... })->middleware('activity.log:visited-dashboard');
Credits
Special thanks to Nuno Maduro for his dry repository it was the skeleton inspiration.
License: MIT
统计信息
- 总下载量: 2
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 0
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-09-20