nnt / activity-log
Package này cung cấp các chức năng dễ sử dụng để ghi nhật ký hoạt động của người dùng ứng dụng của bạn.
Requires
None
Requires (Dev)
None
Suggests
None
Provides
None
Conflicts
None
Replaces
None
This package is not auto-updated.
Last update: 2026-09-23 13:25:36 UTC
README
Cài đặt
-
Chạy lệnh sau để cài đặt package từ đường dẫn local:
composer require nnt/activity-log -
Publish cấu hình
php artisan vendor:publish --provider="NNT\ActivityLog\ActivityLogServiceProvider" --tag="config" php artisan config:cache -
Publish migration:
php artisan vendor:publish --provider="NNT\ActivityLog\ActivityLogServiceProvider" --tag="migrations" -
Chạy php artisan migrate để tạo bảng activity_logs trong DB
Hướng dẫn dùng
Manually log
Để log nhanh thì có thể sử dụng
activity_log()->log('Hello World!');
Một số tính năng nâng cao:
-
Set log_type column
Sử dụng
logTypeđể đặt giá trị cột log_typeactivity_log() ->logType($eventName) ->log('Hello World!');
-
Set Subject column
Sử dụng
performedOnđể đặt giá trị cột subject. Cột này sẽ lưu giá id và model của đối tượng cần logactivity_log() ->performedOn($anEloquentModel) ->log('Hello World!');
-
Set Subject column
Sử dụng
causedByđể đặt giá trị cột causer. Cột này sẽ lưu giá id và model của user đang log.activity_log() ->causedBy($userEloquentModel) ->log('Hello World!');
Mặc định nếu không truyền gì vào thì sẽ lấy user đang logged in.
Nếu bỏ trống trường này thì sử dụng
causedByAnonymousactivity_log() ->causedByAnonymous() ->log('Hello World!');
-
Set before_value and after_value column
Sử dung
beforeValuevàafterValueđể set giá trị cho 2 cột này, param truyền vào là array, dữ liêu sẽ được json_encode trước khi lưu vào databaseactivity_log() ->beforeValue($beforeValue) ->afterValue($afterValue) ->log('Hello World!');
-
Set description column
Sử dụng
logđể set giá trị cho cột description. Phương thức này bắt buộc phải có để save dataactivity_log() ->log('Hello World!');
-
Set created_at column
Sử dụng
createdAtđể set giá trị cho cột created_at. Param truyền vào là Carbon Objectactivity_log() ->createdAt($timestamp) ->log('Hello World!');
-
Để disable log cho request hiện tại thì sử dụng
activity_log()->disableLogging();
-
Để enable log cho request hiện tại thì sử dụng
activity_log()->enableLogging();
Model Event Log
Package này có thể sử dụng để autolog model event
Để sử dụng thì trong model thêm trait LogsActivity
use NNT\ActivityLog\Traits\LogsActivity; class NewsItem extends Model { use LogsActivity; }
Mặc định là ['created', 'updated', 'deleted'], nếu có sử dụng trait SoftDelete thì có thêm 1 event được hỗ trợ nữa là ['restored']
Để chỉ định những model event nào cần log thì setting bằng cách thêm $recordEvents trong model
protected static $recordEvents = ['deleted'];
Nếu muốn chỉ định những attributes nào sẽ không kích hoạt sự kiện log khi nó thay đổi thì sử dụng
protected static $ignoreChangedAttributes = ['text'];
Mặc định thì updated_at sẽ không được ignore, nên sẽ trigger khi update dữ liệu. Nếu muốn bỏ qua điều này thì bỏ nó vào trong $ignoreChangedAttributes
Nếu muốn loại bỏ các attributes ra khỏi giá trị log before and after value thì sử dụng
protected static $logAttributesToIgnore = ['password', 'updated_at'];
Để custom description thì sử dụng method customActivityDescription() trong model. Method này sẽ cho phép chỉnh sửa lại description trước khi lưu vào database
Ví dụ:
public function customActivityDescription($model, string $eventName) { if ($model->wasChanged('password')) { return 'Password has changed'; } return __("activity_log::messages.{$eventName}"); }
Để set cứng cột related_type thì thêm $relatedType trong model
protected static $relatedType = 'User';
Nếu không set cứng giá trị này thì cột related_type sẽ được thêm vơi định dạng PascalCase và dùng số ít (Job, Customer,...)
Config Advanced
Có thể setting 1 số chức năng ở trong file config. Xem chi tiết ở file activity-log.php