linkorb / app-event-bundle

Symfony 应用程序的应用事件记录

v2.1.0 2022-10-04 20:09 UTC

This package is auto-updated.

Last update: 2024-09-06 14:23:54 UTC


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

祝您应用事件日志记录愉快!