protechstudio/oplogger

它为任何Laravel 5应用程序提供了一个方便的方式来创建用户操作日志。默认支持参数并将日志写入数据库,但也支持连接到不同的存储库。

1.3.2 2016-04-04 22:41 UTC

This package is auto-updated.

Last update: 2024-09-12 04:14:46 UTC


README

它为任何Laravel 5应用程序提供了一个方便且快速的方式来创建用户操作日志。它支持参数,并默认将日志写入数据库,但也可以与自定义存储库一起使用。

安装

使用以下命令通过composer安装此包

composer require protechstudio/oplogger

更新composer后,将服务提供者添加到config/app.php文件中的providers数组中

Protechstudio\Oplogger\OploggerProvider::class,

您还可以将外观添加到config/app.php文件中的aliases数组中

'Oplogger' => Protechstudio\Oplogger\Facades\Oplogger::class,

最后,使用artisan命令发布配置和迁移文件

php artisan vendor:publish --provider="Protechstudio\Oplogger\OploggerProvider"

您还可以使用相关的configmigrations标签只发布配置文件或迁移文件

php artisan vendor:publish --provider="Protechstudio\Oplogger\OploggerProvider" --tag="config"
php artisan vendor:publish --provider="Protechstudio\Oplogger\OploggerProvider" --tag="migrations"

运行迁移(仅当您打算使用内部存储库时需要)

php artisan migrate

配置

打开发布的配置文件config/oplogger.php

return [

    'types' => [
        'test' => 'Basic operation for testing purposes.'
    ],

    'repository' => Protechstudio\Oplogger\Repositories\LogRepository::class
];

然后,用所有操作类型及其特定消息填充types数组。如果您打算使用自定义存储库,则必须编辑repository元素。

使用自定义存储库

自定义存储库必须实现LogRepositoryContract,如下例所示

...
use Protechstudio\Oplogger\Repositories\LogRepositoryContract;

class CustomRepository implements LogRepositoryContract
{
    //your custom repository implementation
}

用法

您可以使用两种方式使用Oplogger服务

使用依赖注入或方法注入

...
use Protechstudio\Oplogger\Oplogger;

class FooController extends Controller
{
    private $oplogger;
    
    public function __construct(Oplogger $oplogger)
    {
        $this->oplogger = $oplogger;
    }
    
    public function bar()
    {
        $this->oplogger->write('test');
    }
}

使用外观

...
use Oplogger;

public function bar()
{
    Oplogger::write('test');
}

向操作字符串添加参数

write方法内部使用vsprintf函数,因此您可以将任何参数添加到config/oplogger.php中的类型操作字符串中

'types' => [
        'test' => 'Basic operation for testing purposes.',
        'myoperation' => 'Has made %d operations using %s',
    ],

然后,您可以将参数数组作为write方法的第二个参数传递

Oplogger::write('myoperation',[4,'parameters']);

// Result will be: 'Has made 4 operations using parameters'

有关参数的高级使用,请参阅vsprintf文档。

与操作关联的用户

Oplogger自动使用Laravel的Auth系统检索登录用户。如果您愿意,也可以通过传递用户ID作为第三个参数来强制将操作与特定用户关联

$userid=5;
Oplogger::write('test',[],$userid);

内部存储库

如果您使用的是内部存储库,运行发布的迁移将创建一个包含user_idoperation和Laravel时间戳字段的logs表。请注意,如果您不是使用Laravel默认用户表作为用户,则应相应地编辑迁移,否则由于外键约束将抛出异常。

您可以通过将use Protechstudio\Oplogger\Models\Log;添加到use语句来访问底层的Log模型。

异常

输入错误的操作类型键

如果在write方法中输入的操作键不在您的配置types数组中,将抛出OploggerKeyNotFoundException异常。

没有为操作提供用户

如果您没有为操作提供特定用户并且用户未登录,将抛出OploggerUserNotLoggedException异常。