定制 nnt/activity-log 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱: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

nnt/activity-log 适用场景与选型建议

nnt/activity-log 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 4 次下载、GitHub Stars 达 0, 最近一次更新时间为 2024 年 07 月 16 日, 在 PHP 生态内属于活跃度较高的组件。

我们在过去多个企业项目中使用过 nnt/activity-log 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 nnt/activity-log 我们能提供哪些服务?
定制开发 / 二次开发

基于 nnt/activity-log 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

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

GitHub 信息

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

其他信息

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