mblsolutions / audit-logging
Laravel应用程序的审计日志包
Requires
- php: ^7.4|^8.0|^8.1
- ext-json: *
- illuminate/contracts: ^6.0|^7.0|^8.0|^9.0|^10|^11
- illuminate/database: ^6.0|^7.0|^8.0|^9.0|^10|^11
- illuminate/events: ^6.0|^7.0|^8.0|^9.0|^10|^11
- illuminate/support: ^6.0|^7.0|^8.0|^9.0|^10|^11
Requires (Dev)
- mockery/mockery: ~1.0
- orchestra/testbench: ^4.0||^5.0||^6.0||^7.0
- phpunit/phpunit: ^7.3||^8.2||^9.3
- roave/security-advisories: dev-latest
This package is auto-updated.
Last update: 2024-08-31 00:41:32 UTC
README
Laravel项目的审计日志
安装
推荐使用composer安装LaravelRepository
php composer require mblsolutions/audit-logging
无自动发现的Laravel
如果您不使用自动发现,请将ServiceProvider添加到config/app.php中的providers数组中
\MBLSolutions\AuditLogging\AuditLoggingServiceProvider::class,
包配置
Copy the package configuration to your local config directory.
php artisan vendor:publish --tag=audit-logging-config
数据库驱动
如果您想使用数据库驱动来存储审计日志,您首先需要创建并运行数据库驱动迁移。
php artisan audit:database:table
这将在database/migrations
中创建一个新的迁移,创建此迁移后,运行数据库迁移以创建新表。
php artisan migrate
使用
配置和设置可以在位于config/audit-logging.php
的审计日志配置文件中进行调整。我们建议在启用审计日志之前阅读配置文件,以确保您有最佳设置。
启用/禁用日志记录
在日志存储之前,您需要通过将配置值设置为true来启用审计日志。
// Request Audit Logging 'enabled' => env('AUDIT_LOGGING_ENABLED', false), // Event Audit Logging 'event_enabled' => env('EVENT_AUDIT_LOGGING_ENABLED', true)
这也可以通过使用相应的环境变量在.env文件中设置
AUDIT_LOGGING_ENABLED=true EVENT_AUDIT_LOGGING_ENABLED=false
审计日志中间件
为了为路由启用审计日志,有多种方式可以实现,已创建中间件别名
web-audit-logging
api-audit-logging
console-audit-logging
这些中间件之间的唯一区别是日志类型
单个路由
您可以通过将中间件应用于路由来为单个路由启用审计日志。
use Illuminate\Routing\Route; Route::get('/user', function () { // })->middleware('web-audit-logging');
或者使用完全限定的类名
use Illuminate\Routing\Route; use MBLSolutions\AuditLogging\Http\Middleware\AuditLogging; Route::get('/user', function () { // })->middleware(AuditLogging::class);
路由组
您可以将中间件应用于路由组。
use Illuminate\Routing\Route; Route::middleware(['web-audit-logging'])->group(function () { Route::get('/', function () { // }); Route::get('/user', function () { // }); });
排除路由
您可以在中间件组中排除特定的路由。
use Illuminate\Routing\Route; Route::middleware(['api-audit-logging'])->group(function () { Route::get('/', function () { // })->withoutMiddleware(['api-audit-logging']); Route::get('/user', function () { // }); });
可选的模型/特性用于日志检索
我们包含了一个AuditLog模型,它具有BindsDynamically特性,您可以使用它如果您想使用Eloquent模型来检索和格式化数据。
- MBLSolutions\AuditLogging\Models\AuditLog - 实现 BindsDynamically 特性。如有需要,可扩展。
- MBLSolutions\AuditLogging\Traids\BindsDynamically - 可用于自定义模型或自动使用,如上所述。
使用具有BindsDynamically特性的模型
为了使用AuditLog模型(或任何实现BindsDynamically特性的模型),您需要像以下示例中那样用连接和表实例化它
$config = config('audit-logging.drivers.database'); $auditLog = new MBLSolutions\AuditLogging\Models\AuditLog; $auditLog->setConnection($config['connection']); $auditLog->setTable($config['table']);
然后您可以像使用任何Eloquent模型一样使用$auditLog
。
归档日志
如果您想归档日志并继续使用新表,则可以通过运行以下命令使用归档命令
php artisan audit:database:archive
如果您是从版本1.6.0全新安装的,那么您已经准备好了,否则如果您是从早期版本安装的现有安装,则应运行更新迁移以添加索引到audit logs的created_at列(如果尚未添加)。您只需使用以下命令发布更新
php artisan audit:update:addindex
然后请记住运行
php artisan migrate
这应在归档后尽快完成,因为表中数据越多,迁移所需的时间越长。
许可证
Audit Logging是免费软件,根据MIT许可证条款分发。