nnt/activity-log 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

nnt/activity-log

Composer 安装命令:

composer require 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.

README 文档

README

Cài đặt

  1. Chạy lệnh sau để cài đặt package từ đường dẫn local:

     composer require nnt/activity-log
    
  2. Publish cấu hình

     php artisan vendor:publish --provider="NNT\ActivityLog\ActivityLogServiceProvider" --tag="config"
    
     php artisan config:cache
    
  3. Publish migration:

     php artisan vendor:publish --provider="NNT\ActivityLog\ActivityLogServiceProvider" --tag="migrations"
    
  4. 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:

  1. Set log_type column

    Sử dụng logType để đặt giá trị cột log_type

    activity_log()   
        ->logType($eventName)
        ->log('Hello World!');
  2. 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 log

    activity_log()   
        ->performedOn($anEloquentModel)
        ->log('Hello World!');
  3. 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 causedByAnonymous

    activity_log()   
        ->causedByAnonymous()
        ->log('Hello World!');
  4. Set before_value and after_value column

    Sử dung beforeValueafterValue để 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 database

    activity_log()   
        ->beforeValue($beforeValue)
        ->afterValue($afterValue)
        ->log('Hello World!');
  5. 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 data

    activity_log()
        ->log('Hello World!');
  6. Set created_at column

    Sử dụng createdAt để set giá trị cho cột created_at. Param truyền vào là Carbon Object

    activity_log()
        ->createdAt($timestamp)
        ->log('Hello World!');
  7. Để disable log cho request hiện tại thì sử dụng

    activity_log()->disableLogging();
  8. Để 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

统计信息

  • 总下载量: 4
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: Unknown
  • 更新时间: 2024-07-16