merkeleon / laravel-log
该包最新版本(1.4.6)没有提供许可证信息。
Laravel 审计日志
1.4.6
2022-06-16 05:29 UTC
Requires
- php: >=7.1
- laravel/framework: >=5.0
- ramsey/uuid: ^4.1
Requires (Dev)
- phpunit/phpunit: 4.5.*
README
Laravel 日志生成模块
安装
首先,使用Composer要求该包
composer require merkeleon/laravel-log
-
添加新的类Log,该类应扩展Merkeleon\Log\Model\Log
-
自定义您的日志类。
- 添加受保护的静态属性$table - 表名或弹性搜索索引名
- 添加自定义参数$customAttributes。默认情况下,仅保存Log::$attributes参数。Log::$customAttributes的键是参数标识符。Log::$customAttributes的值是转换。支持以下转换:
- int
- float
- string
- bool
- array
- 您可以添加验证规则。
- 如果您想将日志复制到文件,您应重写toLogFileArray函数
-
添加merkeleon_log.php配置
php artisan vendor:publish --provider="Merkeleon\Log\Providers\MerkeleonLogProvider"
- 指定您的日志类
- 指定驱动器(mysql或elastic)
- 如果您想将日志复制到文件,您应指定日志文件的路径。
-
如果您想将日志保存到缓冲区,然后批量将所有日志从缓冲区写入存储
- 将缓冲区目录路径添加到merkeleon_log.php配置。缓冲区目录应该是可写的
- 您应该通过调用命令
php artisan merkeleon:log:bulk-insert-to-storage {logName}
来清空您的缓冲区
###示例
<?php
namespace App\Models;
use Merkeleon\Log\Model\Log;
class AuditLog extends Log
{
protected static $table = 'audit_logs';
protected static $customAttributes = [
'user_id' => 'int',
'user_id_related' => 'int',
'data' => 'array',
];
protected static $rules = [
'event_type' => 'required',
'ip' => 'required',
'user_agent' => 'required',
'user_id' => 'integer',
'user_id_related' => 'integer',
];
public function toLogFileArray()
{
return [
"created_at" => $this->created_at->format('Y-m-d H:i:s'),
"ip" => $this->ip,
"event_type" => $this->event_type,
"user_id" => $this->user_id,
"user_id_related" => empty($this->user_id_related) ? '-' : $this->user_id_related,
"user_agent" => '"' . $this->user_agent . '"',
"data" => json_encode($this->data)
];
}
}
<?php
return [
'audit_log' => [
'class' => \App\Models\AuditLog::class,
'driver' => 'elastic',
'log_file' => '/var/www/logs/audit_log.log'
],
];
用法
##示例
$auditLogRepository = LogRepository::make('audit_log');
$auditLogRepository->write([
'user_id' => 1,
'event_type' => 'user_banned',
'user_id_related' => 2,
'data' => [
'user' => [
'id' => '1',
'name' => 'Admin User',
],
'user_related' => [
'id' => '2',
'name' => 'Test user'
]
]
]);
$auditLogRepository->where('user_id', 1)->orderBy('event_type', 'asc')->paginate(10);
$auditLogRepository->where('user_id', 1)->get();
##示例
$auditLogRepository = LogRepository::make('audit_log');
$auditLogRepository->write([
'user_id' => 1,
'event_type' => 'user_banned',
'user_id_related' => 2,
'data' => [
'user' => [
'id' => '1',
'name' => 'Admin User',
],
'user_related' => [
'id' => '2',
'name' => 'Test user'
]
]
], true);
$auditLogRepository->write([
'user_id' => 1,
'event_type' => 'user_login',
'data' => [
'user' => [
'id' => '1',
'name' => 'Admin User',
]
]
], true);
// call command `php artisan merkeleon:log:bulk-insert-to-storage audit_log`
$auditLogRepository->where('user_id', 1)->orderBy('event_type', 'asc')->paginate(10);
$auditLogRepository->where('user_id', 1)->get();