ge-tracker / basic-activity-log
一个用于监控您网站或应用程序用户的非常简单的活动记录器
Requires
- php: ^8.0
- illuminate/database: ^8.0|^9.0|^10.0
- illuminate/support: ^8.0|^9.0|^10.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.6
- gtjamesa/php-standards: ^2.0
- mockery/mockery: ^1.3.1
- orchestra/testbench: ^6.0|^7.0|^8.0
- phpunit/phpunit: ^9.0
- roave/security-advisories: dev-master
README
描述
这个Laravel包提供了一个非常容易使用的解决方案来记录您的Laravel应用程序用户的活动。所有活动都将记录在数据库表中。可选地,活动也可以记录到默认的Laravel日志处理器。
此包最初由Spatie创建,Spatie是一家位于比利时安特卫普的网页设计公司。它于2020年4月1日被GE Tracker分支,并重命名,因为我们正在我们的生产应用程序中使用此包。
安装
此包可以通过Composer安装。
composer require ge-tracker/basic-activity-log
此服务提供程序将自动注册。
您还需要发布并运行迁移以创建数据库表。
php artisan vendor:publish --provider="GeTracker\BasicActivityLog\BasicActivityLogServiceProvider" --tag="migrations" php artisan migrate
可选地,您可以发布此包的配置文件。
php artisan vendor:publish --provider="GeTracker\BasicActivityLog\BasicActivityLogServiceProvider" --tag="config"
配置将被写入到config/basic-basic-activitylog.php
。提供的选项是自解释的。
使用
手动记录
记录某些活动非常简单。
//at the top of your file you should import the facade. use Activity; ... /* The log-function takes two parameters: - $text: the activity you wish to log. - $user: optional can be an user id or a user object. if not proved the id of Auth::user() will be used */ Activity::log('Some activity that you wish to log');
传递给函数的字符串将与时戳、IP地址和用户的用户代理一起写入数据库表。
记录模型事件
此包可以记录您的模型的事件。为了做到这一点,您的模型必须使用LogsActivity
-trait并实现LogsActivityInterface
。
use GeTracker\BasicActivityLog\Contracts\LogsActivity as LogsActivityContract; use GeTracker\BasicActivityLog\LogsActivity; use Illuminate\Database\Eloquent\Model; class Article extends Model implements LogsActivityContract { use LogsActivity; ...
接口期望您实现getActivityDescriptionForEvent
-函数。
以下是一个可能的实现示例。
/** * Get the message that needs to be logged for the given event name. * * @param string $eventName * @return string */ public function getActivityDescriptionForEvent($eventName) { if ($eventName == 'created') { return 'Article "' . $this->name . '" was created'; } if ($eventName == 'updated') { return 'Article "' . $this->name . '" was updated'; } if ($eventName == 'deleted') { return 'Article "' . $this->name . '" was deleted'; } return ''; }
此函数的结果将被记录,除非结果是空字符串。
使用前置处理程序。
如果您想在某些条件下禁用记录,例如针对特定用户,请创建一个实现GeTracker\BasicActivityLog\Contracts\BeforeHandlerInterface
的应用程序命名空间中的类。
此接口定义了一个shouldLog()
方法,您可以在其中编写任何自定义逻辑以确定是否忽略记录。您必须返回true
以记录调用。
将命名空间类名添加到配置文件中的beforeHandler
字段
'beforeHandler' => '\App\Handlers\BeforeHandler',
例如,此回调类可能如下所示以禁用ID为1的用户记录
<?php namespace App\Handlers; use GeTracker\BasicActivityLog\Contracts\BeforeHandler; class BeforeHandler implements BeforeHandler { public function shouldLog($text, $userId) { if ($userId == 1) {return false;} return true; } }
检索记录条目
所有事件都将记录在activity_log
-表中。此包提供了一个Eloquent模型来处理该表。您可以使用所有您所熟悉的正常Eloquent方法。以下是获取最后100个活动及其相关用户的方法。
use GeTracker\BasicActivityLog\Models\Activity; $latestActivities = Activity::with('user')->latest()->limit(100)->get();
清理日志
随着时间的推移,您的日志会增长。要清理数据库表,请运行此命令
Activity::cleanLog();
默认情况下,将删除超过2个月的记录。月份数量可以在包的配置文件中修改。
贡献
有关详细信息,请参阅CONTRIBUTING。
安全性
如果您发现任何与安全相关的问题,请通过电子邮件support@ge-tracker.com报告,而不是使用问题跟踪器。
致谢
许可证
MIT许可证(MIT)。请参阅许可证文件以获取更多信息。