rajuez/activitylog

一个非常简单的活动记录器,用于监控您的网站或应用的用户

2.0.4 2015-05-27 07:18 UTC

This package is not auto-updated.

Last update: 2024-09-18 07:48:20 UTC


README

Latest Version Software License Build Status SensioLabsInsight Total Downloads

这个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)。有关更多信息,请参阅许可文件