Skip to content

审计日志

Doggy 提供全链路的系统操作审计能力,通过 AuditService 记录所有关键操作,存储在 App\Entity\System\AuditLog

概述

审计日志系统由以下部分组成:

  • AuditLog 实体src/Entity/System/AuditLog.php):日志持久化
  • AuditServicesrc/Service/System/AuditService.php):日志记录服务
  • 审计日志入口在 App\Controller\Admin\SecurityConfigController

记录内容

每条审计日志包含:

  • action:操作类型(login_successlogin_failurecreateupdatedelete
  • category:分类(securitybusinesssystem
  • details:操作详情(JSON 格式)
  • performer:执行操作的用户

使用方式

php
use App\Service\System\AuditService;

class SomeService
{
    public function __construct(private AuditService $auditService) {}

    public function doSomething(): void
    {
        // 登录成功
        $this->auditService->log('login_success', 'security', [], $user);

        // 登录失败
        $this->auditService->log('login_failure', 'security', [
            'username' => $email,
            'error' => $exception->getMessage(),
        ]);

        // 数据操作
        $this->auditService->log('update', 'business', [
            'entity' => Employee::class,
            'id' => $employee->getId(),
            'changes' => $changes,
        ]);
    }
}

集成

审计日志已自动集成到主要安全流程中:

登录认证

App\Security\AppCustomAuthenticator 自动记录:

php
// 登录成功时
$this->auditService->log('login_success', 'security', [], $user);

// 登录失败时
$this->auditService->log('login_failure', 'security', [
    'username' => $email,
    'error' => $exception->getMessage(),
]);

安全要求

  • 审计日志仅审计员可查看(ROLE_AUDITOR,通过 ThreeOfficersVoterAUDIT_VIEW 权限)
  • 日志存储到数据库,支持追溯和导出
  • 支持按时间范围、用户、操作类型搜索

基于 MIT 协议开源 | Copyright © 2026 Doggy