rajuez / activitylog
一个非常简单的活动记录器,用于监控您的网站或应用的用户
Requires
- php: >=5.4.0
- illuminate/support: 5.*
Requires (Dev)
- mockery/mockery: 0.9.*
- phpunit/phpunit: ~4.0
README
这个Laravel 5包提供了一个非常易于使用的解决方案来记录Laravel 5应用的用户的操作。所有操作都将记录在数据库表中。可选地,这些操作也可以记录在默认的Laravel日志处理器中。
由Freek Van der Herten (@freekmurze) 创建
注意
如果您正在使用Laravel 4,请查看本包的0.3.0版本。
安装
此包可以通过Composer安装。
composer require spatie/activitylog
必须注册此服务提供者。
// config/app.php 'providers' => [ '...', 'Spatie\Activitylog\ActivitylogServiceProvider', ];
您还需要发布并运行迁移以创建数据库表。
php artisan vendor:publish --provider="Spatie\Activitylog\ActivitylogServiceProvider" --tag="migrations"
php artisan migrate
Activitylog还提供了一个外观,它提供了一种轻松调用它的方式。
// config/app.php 'aliases' => [ ... 'Activity' => 'Spatie\Activitylog\ActivitylogFacade', ];
可选地,您可以发布此包的配置文件。
php artisan vendor:publish --provider="Spatie\Activitylog\ActivitylogServiceProvider" --tag="config"
配置将被写入config/activitylog.php
。提供的选项是自解释的。
用法
手动记录
记录某些活动非常简单。
/* 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
-特质并实现LogsActivityInterface
。
use Spatie\Activitylog\LogsActivityInterface; use Spatie\Activitylog\LogsActivity; class Article implements LogsActivityInterface { 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 deleted'; } if ($eventName == 'deleted') { return 'Article "' . $this->name . '" was deleted'; } return ''; }
此函数的结果将被记录,除非结果为空字符串。
检索记录的条目
所有事件都将记录在activity_log
-表中。此包提供了一个Eloquent模型来处理该表。您可以使用所有您所熟悉的正常Eloquent方法。以下是如何获取最后100个活动及其关联的用户的方法。
use Spatie\Activitylog\Models\Activity; $latestActivities = Activity::with('user')->latest()->limit(100)->get();
清理日志
随着时间的推移,您的日志将增长。要清理数据库表,您可以运行以下命令
Activity::cleanLog();
默认情况下,将删除超过2个月的记录。可以在包的配置文件中修改月份数。
贡献
有关详细信息,请参阅CONTRIBUTING
安全
如果您发现任何安全相关的问题,请通过电子邮件freek@spatie.be而不是使用问题跟踪器。
鸣谢
许可
MIT许可(MIT)。有关更多信息,请参阅许可文件