pbweb / audit-bundle
Symfony的PB Web Media审计包
Requires
- php: >=8.1
- ext-json: *
- psr/log: ^1.0|^2.0|^3.0
- symfony/config: ^5.4|^6.0
- symfony/dependency-injection: ^5.4|^6.0
- symfony/event-dispatcher: ^5.4|^6.0
- symfony/http-kernel: ^5.4|^6.0
- symfony/yaml: ^5.4|^6.0
Requires (Dev)
- doctrine/orm: ^2.9|^3.0
- mockery/mockery: ^1.6
- phpunit/phpunit: ^9.5
- symfony/framework-bundle: ^5.4|^6.0
- symfony/monolog-bundle: ^3.8
- symfony/security-bundle: ^5.4|^6.0
Suggests
- doctrine/orm: For writing the audit log to the database
- symfony/security: For if you use the default event appenders
README
提供易于扩展的Symfony Bundle以创建审计日志。
安装
使用composer安装audit-bundle
composer require pbweb/audit-bundle
使用
要向审计日志中插入条目,创建一个AuditEvent
并将其传递给AuditLog
$event = new \Pbweb\AuditBundle\Event\AuditEvent('test'); $log = $container->get('pbweb_audit.audit_log'); $log->log($event);
您也可以创建自己的事件(我们推荐这样做),只要它们实现了AuditEventInterface
。
流程
事件进入审计日志,然后按以下顺序触发以下事件(以提供的AuditEventInterface
事件为参数)
Pbweb\AuditBundle\Event\AppendAuditEvent
- 类的名称为
$event
Pbweb\AuditBundle\Event\LogAuditEvent
这样,您可以在通用流程时刻挂钩,或者仅响应特定事件。
审计包使用Symfony事件系统,因此在处理这些事件时,所有正常的操作(如监听器优先级、停止传播等)都有效。
事件追加器
事件通常不完整,您可能想要追加一些与事件相关的数据,例如触发事件的用户或客户端的IP地址。
为此,请监听Pbweb\AuditBundle\Event\AppendAuditEvent
事件(通过监听器或订阅者)。它将接收所有进入审计日志的AuditEventInterface
事件。
默认事件追加器
审计包附带了一些默认加载的事件追加器,您可以在下面的配置部分中了解如何禁用。
如果您使用这些追加器,则需要将symfony/security
添加到您的项目中。
日志记录器
最终,审计日志条目需要存储在某个地方,无论是数据库、PSR日志记录器还是您能想到的任何东西。
审计包附带了一个PSR日志记录器和Doctrine日志记录器(见下文)。
您还可以通过监听Pbweb\AuditBundle\Event\LogAuditEvent
事件来实现自己的日志记录器。它将接收所有进入审计日志的AuditEventInterface
事件。
PSR日志记录器
默认情况下,审计包加载了PsrLogger
,它将使用@logger
服务将事件记录到您的默认日志。请参阅下面的配置部分了解如何禁用此行为。
Doctrine日志记录器
对于小(或较小)的审计日志,您可以使用数据库作为数据存储。审计包附带了一个AbstractDoctrineLogger
。您需要做的只是创建一个实现convertToEntity
方法的服务,并将其标记为kernel.event_subscriber
。
配置
您可以在app/config.yml
文件中可选地配置审计包
pbweb_audit: load_default_event_loggers: true # loads the loggers defined in Pbweb/AuditBundle/Resources/config/default/loggers.yml load_default_event_appenders: true # loads the event appenders in Pbweb/AuditBundle/Resources/config/default/appenders.yml
版权
© PB Web Media