linkorb / app-event-bundle
Symfony 应用程序的应用事件记录
Requires
- php: >=8.0.3
- linkorb/app-event: ^2.0
- monolog/monolog: ^1.24 || ^2
- psr/log: ^1.1
- symfony/config: ^5.4 || ^6.0
- symfony/dependency-injection: ^5.4 || ^6.0
- symfony/framework-bundle: ^5.4 || ^6.0
- symfony/http-kernel: ^5.4 || ^6.0
- symfony/monolog-bridge: ^5.4 || ^6.0
- symfony/security-core: ^5.4 || ^6.0
- symfony/yaml: ^5.4 || ^6.0
README
集成了 linkorb/app-event 及其标准日志记录应用事件的手动配置。
安装
使用 Symfony Flex 的应用程序
打开命令行,进入您的项目目录并执行
$ composer require linkorb/app-event-bundle
不使用 Symfony Flex 的应用程序
步骤 1:下载包
打开命令行,进入您的项目目录并执行以下命令以下载此包的最新稳定版本
$ composer require linkorb/app-event-bundle
此命令需要您全局安装 Composer,具体请参阅 Composer 文档中的 安装章节。
步骤 2:启用包
然后,通过将其添加到项目 config/bundles.php
文件中注册的包列表中启用该包
// config/bundles.php return [ // ... LinkORB\AppEventBundle\LinkORBAppEventBundle::class => ['all' => true], ];
用法
该包将自动向实现 AppEventLoggerAwareInterface 的服务和控制器注入特殊的 App 事件记录器。有几种实现方式。
使用 AppEventLoggerTrait,它提供了 AppEventLoggerAwareInterface 和 AppEventLoggerInterface 的实现
use LinkORB\AppEvent\AppEventLoggerAwareInterface; use LinkORB\AppEvent\AppEventLoggerInterface; use LinkORB\AppEvent\AppEventLoggerTrait; class MyService implements AppEventLoggerAwareInterface, AppEventLoggerInterface { use AppEventLoggerTrait; public function myMethod() { // using the trait makes it very simple to add AppEvent logging: $this->log('my.app.event', ['some-info' => ...], 'notice'); } }
如果您的控制器扩展了 Symfony 的 AbstractController,则可以改为让它们扩展 AppEventLoggingController,该控制器为您执行上述操作并扩展了 Symfony 的 AbstractController
use LinkORB\AppEventBundle\Logger\AppEventLoggingController; class MyController extends AppEventLoggingController { public function myAction() { $this->log('my.app.event', ['some-info' => ...], 'notice'); } }
您的服务可以扩展 AppEventLoggingService 以获得相同的好处
use LinkORB\AppEventBundle\Logger\AppEventLoggingService; class MyService extends AppEventLoggingService { public function myMethod() { $this->log('my.app.event', ['some-info' => ...], 'notice'); // by omission of the third argument, log() will log to the minimum log // level, which is whatever you set in the Monolog handler config $this->log('my.app.event', ['some-info' => ...); // you can also call the logger methods directly, but only do this // when the bundle is configured in all environments $this->appEventLogger->error('my.app.event', ['some-info' => ...]); } }
配置
您需要为该包启用的每个环境创建 Monolog 配置(默认情况下为所有环境)。将其放在每个 Monolog 配置文件中
monolog: channels: - app_event handlers: app_events: type: stream path: "%kernel.logs_dir%/app-events-%kernel.environment%.ndjson" level: info channels: ["app_event"]
在上面的配置中,我们指示 Symfony 的 Monolog 包创建一个名为 monolog.logger.app_event
的额外日志记录器服务,并创建一个 Monlog 的 StreamHandler 实例,该实例将由我们的记录器用于将日志写入到 path
中的文件。我们的记录器的最小日志级别设置为 INFO。这是配置记录器的最低要求,但还有一些额外的事情可以配置。
以下配置可以独立设置在每个环境中,例如,您可以将指令放在名为 config/packages/prod/linkorb_app_event.yaml
的文件中。如果该包在所有环境中都启用,则可以在 config/packages/linkorb_app_event.yaml
中同时为所有环境配置它。
您可以关闭 TokenProcessor,该处理器会自动将有关认证用户的信息添加到应用事件中
linkorb_app_event: token_processor: false
您可以打开 TagProcessor,该处理器将添加您的标签到应用事件中
linkorb_app_event: tag_processor: tags: mytag: myothertag: tagwithvalue: a-value
最后,还有一些不太可能需要配置的事情。
您可以更改日志记录通道的名称,从默认的 app_event
linkorb_app_event: channel_name: "my_channel_name"
请记住,在 Monolog 配置文件中使用此通道名称而不是 app_event
您还可以更改日志处理器的名称,从默认的 app_events
linkorb_app_event: handler_name: "my_handler_name"
请记住,在 Monolog 配置文件中使用此处理器名称而不是 app_events
祝您应用事件日志记录愉快!