kolaybi/activity-log
Composer 安装命令:
composer require kolaybi/activity-log
包简介
Standalone activity logging package for Laravel — logs human-readable business events with i18n entry resolution.
README 文档
README
Standalone activity logging package for Laravel. Logs human-readable business events with i18n entry resolution, queue support, and multi-tenant context.
Requirements
- PHP 8.4+
- Laravel 12+
Installation
composer require kolaybi/activity-log
The service provider is auto-discovered. Publish the config and migration:
php artisan vendor:publish --tag=activity-log-config php artisan vendor:publish --tag=activity-log-migrations php artisan migrate
Configuration
// config/kolaybi/activity-log.php return [ 'model' => \KolayBi\ActivityLog\Models\Activity::class, 'context_provider' => null, // falls back to NullContextProvider 'connection' => null, // uses default database connection 'table' => 'activities', 'queue' => [ 'connection' => 'sync', ], ];
Usage
Define an activity group
Create a backed string enum implementing ActivityGroup:
use KolayBi\ActivityLog\Contracts\ActivityGroup; enum MyActivityGroup: string implements ActivityGroup { case NONE = 'none'; case COMPANY = 'company'; case USER = 'user'; }
Create a concrete activity
Extend AbstractActivity, set the GROUP constant, and implement parameters():
use KolayBi\ActivityLog\AbstractActivity; class CompanyCreatedActivity extends AbstractActivity { protected const MyActivityGroup GROUP = MyActivityGroup::COMPANY; public function __construct( private readonly Company $company, ) {} protected function parameters(): array { return [ 'company_name' => $this->company->name, 'company_type' => $this->company->company_type->value, ]; } }
Log an activity
CompanyCreatedActivity::with($company)->log();
The log() method dispatches the record creation as a queued closure. Context (creator, tenant) is resolved eagerly before dispatch, since Auth/Request aren't available inside queued closures.
Context provider
Implement ActivityContextProvider to supply creator and tenant IDs:
use KolayBi\ActivityLog\Contracts\ActivityContextProvider; class MyContextProvider implements ActivityContextProvider { public function creatorId(): int|string|null { return Auth::id(); } public function tenantId(): int|string|null { return tenant()?->id; } }
Register it in your config:
'context_provider' => \App\Providers\MyContextProvider::class,
Or bind it directly in a service provider:
$this->app->singleton( \KolayBi\ActivityLog\Contracts\ActivityContextProvider::class, \App\Providers\MyContextProvider::class, );
Entry resolution (i18n)
The Activity model provides an entry attribute that resolves a human-readable string via Laravel's translation system:
// Translation key: activities.App\Activities\CompanyCreatedActivity // lang/en/activities.php: // 'App\Activities\CompanyCreatedActivity' => ':company_name (:company_type) was created.', $activity->entry; // "Acme Corp (regular) was created."
Parameters that contain enum references are resolved automatically:
protected function parameters(): array { return [ 'status' => [ 'enum' => Status::class, 'value' => $this->model->status->value, 'function' => 'label', ], ]; }
Custom Activity model
Extend the package model and update the config:
use KolayBi\ActivityLog\Models\Activity as BaseActivity; class Activity extends BaseActivity { protected $connection = 'my_connection'; protected function casts(): array { return array_merge(parent::casts(), [ 'group' => MyActivityGroup::class, ]); } }
'model' => \App\Models\Activity::class,
Database schema
| Column | Type | Notes |
|---|---|---|
id |
ULID | Primary key |
created_at |
Timestamp | |
updated_at |
Timestamp | |
deleted_at |
Timestamp | Soft deletes |
tenant_id |
String (nullable) | Indexed |
creator_id |
String (nullable) | Indexed |
group |
String | Indexed |
type |
String | Indexed, activity class FQCN |
parameters |
JSON | Translation parameters |
Testing
composer test
Changelog
Please see CHANGELOG for more information on what has changed recently.
Contributing
Please see CONTRIBUTING for details.
License
Please see License File for more information.
kolaybi/activity-log 适用场景与选型建议
kolaybi/activity-log 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 407 次下载、GitHub Stars 达 0, 最近一次更新时间为 2026 年 03 月 04 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「logging」 「i18n」 「events」 「Audit」 「laravel」 「activity-log」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 kolaybi/activity-log 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 kolaybi/activity-log 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 kolaybi/activity-log 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Easy to use i18n translation PHP class for multi-language websites
A custom URL rule class for Yii 2 which allows to create translated URL rules
Библиотека для реализаций паттерна Pub/Sub
A Zend Framework module that sets up Monolog for logging in applications.
Wireless Cross-Component Communication
A powerful event calendar Tool for Laravel's Nova 5.
统计信息
- 总下载量: 407
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 25
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2026-03-04