protechstudio / oplogger
它为任何Laravel 5应用程序提供了一个方便的方式来创建用户操作日志。默认支持参数并将日志写入数据库,但也支持连接到不同的存储库。
Requires
- php: >=5.5.9
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"
您还可以使用相关的config
和migrations
标签只发布配置文件或迁移文件
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_id
、operation
和Laravel时间戳字段的logs
表。请注意,如果您不是使用Laravel默认用户表作为用户,则应相应地编辑迁移,否则由于外键约束将抛出异常。
您可以通过将use Protechstudio\Oplogger\Models\Log;
添加到use语句来访问底层的Log
模型。
异常
输入错误的操作类型键
如果在write
方法中输入的操作键不在您的配置types
数组中,将抛出OploggerKeyNotFoundException
异常。
没有为操作提供用户
如果您没有为操作提供特定用户并且用户未登录,将抛出OploggerUserNotLoggedException
异常。