data-dog / audit-bundle
symfony2 和 doctrine orm 的审计包,记录任何数据库更改
Requires
- php: >=8.1
- doctrine/dbal: ^3.2|^4.0
- doctrine/doctrine-bundle: ^2.9
- doctrine/orm: ^2.13|^3.0
- symfony/console: ^6.4 | ^7.0
- symfony/framework-bundle: ^6.4 | ^7.0
- symfony/security-bundle: ^6.4 | ^7.0
Requires (Dev)
- ext-pdo: *
- ext-pdo_sqlite: *
- phpunit/phpunit: ^9
- symfony/phpunit-bridge: ^6.4 | ^7.0
README
该包为所有 Doctrine ORM 数据库相关更改创建审计日志
- 包括插入、更新以及它们的差异和关系字段差异。
- 多对多关系更改,关联和解关联操作。
- 如果存在用户在令牌存储中,他们将被链接到日志。
- 在 flush 期间,审计条目将插入到同一事务中,如果出现问题,状态将保持清洁。
基本上,您可以通过这些日志条目跟踪任何通过标准 ORM 操作管理的更改。
注意:审计无法跟踪 DQL 或直接 SQL 更新或删除语句的执行。
安装
首先,使用 composer 安装它
composer require data-dog/audit-bundle
然后,将其添加到您的包中。
// config/bundles.php return [ ... DataDog\AuditBundle\DataDogAuditBundle::class => ['all' => true], ... ];
最后,创建包使用的数据库表
php app/console doctrine:migrations:diff php app/console doctrine:migrations:migrate
使用 Doctrine Schema
php app/console doctrine:schema:update --force
用法
audit 实体将在运行架构更新或类似操作时自动映射。之后,所有数据库更改都将反映在审计日志中。
未审计实体
有时,您可能不想为特定实体创建审计日志条目。您可以通过在 config.yml
中的 unaudited_entities
配置键下列出这些实体来实现,例如
data_dog_audit: unaudited_entities: - App\Entity\NoAuditForThis
指定审计实体
有时,您也可能只想为特定实体创建审计日志条目。您可以通过类似于未审计实体的方式来实现。您可以在 config.yml
中的 audited_entities
配置键下列出它们,例如
data_dog_audit: audited_entities: - App\Entity\AuditForThis
您可以选择审计或未审计实体。如果两者都指定,则只考虑审计实体。
模拟
有时,您可能还希望将责任归咎于 impersonator
用户,而不是 impersonated
用户。您可以通过在 config.yml
中添加 blame_impersonator
配置键来实现,例如
data_dog_audit: blame_impersonator: true
默认行为是将责任归咎于已登录用户,因此在不明确声明的情况下将忽略 impersonator
。
清理旧日志
要清理旧日志,请使用以下命令
bin/console audit-logs:delete-old-logs --retention-period=P6M
您可以指定 retention-period
,格式请参阅:https://php.ac.cn/manual/en/dateinterval.construct.php
许可
审计包是免费使用的,并且受MIT 许可证的许可。