mblsolutions/audit-logging

Laravel应用程序的审计日志包

v1.6.0 2024-05-31 10:33 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许可证条款分发。