定制 foxen/laravel-model-activity-log 二次开发

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

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

foxen/laravel-model-activity-log

Composer 安装命令:

composer require foxen/laravel-model-activity-log

包简介

A simple Laravel package to log model activity.

README 文档

README

A simple Laravel package to automatically record basic activity (creation, updates with attribute changes, deletion, restoration) performed on specified Eloquent models, and provide a mechanism for automatically pruning old log entries.

Requirements

Installation

You can install the package via composer:

composer require foxen/laravel-model-activity-log

The package will automatically register its service provider.

To publish the configuration file, run the following command:

php artisan vendor:publish --provider="Foxen\LaravelModelActivityLog\Providers\ActivityLogServiceProvider" --tag="config"

This will create a foxen_activitylog.php file in your config directory, which can be modified as required.

Finally, you need to run the migrations to create the activity_log table:

php artisan migrate

Usage

To enable activity logging for a model, simply use the LogsActivity trait in your model class:

use Illuminate\Database\Eloquent\Model;
use Foxen\LaravelModelActivityLog\Traits\LogsActivity;

class Post extends Model
{
    use LogsActivity;

    // ...
}

The following events are automatically logged: created, updated, deleted. If your model uses SoftDeletes, the restored event is logged as well.

When an action is performed by an authenticated user, they are recorded as the causer. Actions performed without an authenticated user (e.g. from a console command or queue job) are attributed to System.

Customizing the Log Name

By default, the log name is set to default. You can customize this on a per-model basis by adding a protected $activityLogName property to your model:

class Post extends Model
{
    use LogsActivity;

    protected $activityLogName = 'posts';

    // ...
}

Ignoring Attributes

To exclude certain attributes from the activity log when a model is created or updated, you can add a protected $ignoreActivityLogAttributes property to your model:

class Post extends Model
{
    use LogsActivity;

    protected $ignoreActivityLogAttributes = ['updated_at'];

    // ...
}

Redacting Attributes

To redact sensitive attributes from the activity log, you can add a protected $redactedActivityLogAttributes property to your model. The attribute key will be logged, but the value will be replaced with [REDACTED].

class User extends Model
{
    use LogsActivity;

    protected $redactedActivityLogAttributes = ['password', 'remember_token'];

    // ...
}

You can also configure global redacted attributes in the config/foxen_activitylog.php file.

Retrieving Logs

You can retrieve activity logs using the Foxen\LaravelModelActivityLog\Models\Activity model. The package provides several convenient query scopes:

use Foxen\LaravelModelActivityLog\Models\Activity;

// Get all activity for a specific model instance
$activities = Activity::whereSubject($post)->get();

// Get all activity for a specific model type
$activities = Activity::forSubjectType('App\Models\Post')->get();

// Get all activity caused by a specific user
$activities = Activity::whereCauser($user)->get();

// Get all activity for a specific causer type
$activities = Activity::forCauserType('App\Models\User')->get();

// Get all activity for a specific event
$activities = Activity::forEvent('created')->get();

You can access the subject and causer models directly via their relationships:

$activity = Activity::first();

$subject = $activity->subject; // The model that was acted upon
$causer  = $activity->causer;  // The user who performed the action, or null

For updated events, the properties field contains the old and new values of changed attributes:

$activity = Activity::forEvent('updated')->first();

$old = $activity->properties['old']; // ['title' => 'Old Title']
$new = $activity->properties['new']; // ['title' => 'New Title']

Pruning Logs

The package can automatically prune old activity log entries. To enable this, set the prune_activity_log option to true in your config/foxen_activitylog.php file and configure the prune_older_than_days option.

// config/foxen_activitylog.php

return [
    // ...
    'prune_activity_log' => true,
    'prune_older_than_days' => 30,
];

Once enabled, you must schedule the model:prune command in your application's routes/console.php file:

use Illuminate\Support\Facades\Schedule;

Schedule::command('model:prune')->daily();

Testing

composer test

foxen/laravel-model-activity-log 适用场景与选型建议

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

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

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

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

BUG 修复 & 性能优化

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

项目外包 & 长期维护

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

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

统计信息

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

GitHub 信息

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

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-03-14