salayx/rabbitmq-logger

本包最新版本(1.0.0)没有可用的许可信息。

将错误和异常记录到rabbitmq交换机。

1.0.0 2017-06-13 09:32 UTC

This package is not auto-updated.

Last update: 2024-09-29 03:25:54 UTC


README

将错误和异常记录到rabbitmq交换机。

Latest stable

Rabbitmq Logger 为 Nette 框架 提供了两个扩展。

  • RabbitMqLoggerExtension 用于将错误/异常记录到 rabbitmq 交换机。如果您希望在 rabbitmq 中记录错误消息,则应在所有项目中使用此扩展。
  • ConsumerExtension 用于从队列获取消息,并可选地使用 doctrine 2 将其保存到数据库。它还提供网格来显示已保存的消息。您应与内部应用程序一起使用此扩展来管理已保存的消息。

安装

要求

salayx/rabbitmq-logger 需要 PHP 5.4 或更高版本。

建议

如果您想使用 ConsumerExtension 将日志保存到数据库

如果您想使用 ConsumerExtension 提供网格以显示已保存的消息

安装

安装 salayx/rabbitmq-logger 的最佳方式是使用 Composer

composer require sallyx/rabbitmq-logger
composer require kdyby/console
composer require kdyby/doctrine
composer require ublaboo/datagrid

配置

首先,您需要配置 Kdyby/RabbitMq。至少是连接

extensions:
    rabbitmq: Kdyby\RabbitMq\DI\RabbitMqExtension

rabbitmq:
    connection:
        host: localhost
        port: 5672
        user: 'guest'
        password: 'guest'
        #vhost: '/'

如果您想使用 RabbitMqLoggerExtension 记录错误消息,请按如下方式添加和配置它

extensions:
    rabbitmqLoggerExt: Sallyx\RabbitMqLogger\DI\RabbitMqLoggerExtension

这是 RabbitMqLoggerExtension 的默认配置

rabbitmqLoggerExt:
    rabbitmqEnabled: true
    rabbitmqExtensionName: rabbitmq
    guid: rabbitmq-logger                # global id of your site (use whatever you want)
    producer:
        connection: default              # Kdyby/RabbitMq default connection
        exchange:
            name: nette-log-exchange
            type: fanout

如果您使用 direct 交换机,路由键的格式为 priority,其中 priority 是 errorexception。如果您使用 topic 交换机,路由键的格式为 priorityguid

如果您想使用 ConsumerExtension,您必须添加 Kdyby/Console 和/或 Kdyby/Doctrine 扩展,并配置它(请参阅该扩展的文档)

extensions:
    rabbitmqLoggerConsumer: Sallyx\RabbitMqLogger\DI\ConsumerExtension # must be first!
    console: Kdyby\Console\DI\ConsoleExtension
    events: Kdyby\Events\DI\EventsExtension
    annotations: Kdyby\Annotations\DI\AnnotationsExtension
    doctrine: Kdyby\Doctrine\DI\OrmExtension
    rabbitmqLoggerExt: Sallyx\RabbitMqLogger\DI\RabbitMqLoggerExtension # if you want to use it either
  
console:
    url: https:///~petr/example-url/

doctrine:
    host: 127.0.0.1
    user: petr
    password: xxx
    dbname: databasename
    driver: pdo_pgsql # pdo_mysql

这是 ConsumerExtension 的默认配置

rabbitmqLoggerConsumer:
    consumerName: rabbitLogger
    consumer:
        connection: default                   # Kdyby/RabbitMq default connection
        queue:
            name: nette-log-queue
        exchange:
            name: nette-log-exchange          # the same as for RabbitMqLoggerExtension
            type: fanout                      # the same as for RabbitMqLoggerExtension
    manager: Sallyx\RabbitMqLogger\Model\Doctrine\Manager

如果您想轻松访问您的已记录异常,您可以将此添加到 RabbitMqLoggerExtension 配置中

rabbitmqLoggerExt:
    exceptionFileRoute:
        route: get-tracy-exception-file               
        secret: xxx
    ....

这将在您的 Web 应用程序中创建一个路由,提供对以 http://example.org/get-tracy-exception-file?secret=xxx&file=name_of_the_file 形式保存的错误消息的访问

要在网格中使用此功能,请将此添加到 ConsumerExtension 配置中

rabbitmqLoggerConsumer:
    exceptionFileRoute:
        route: get-tracy-exception-file
        secret: xxx
    ....

设置

您必须为 RabbitMqLoggerExtension 创建交换机,为 ConsumerExtension 创建队列。如果要将消息保存到数据库,您还必须创建模式和表。

如果您已安装 Kdyby/Console,您可以使用 Kdyby/RabbitMq 扩展中的 rabbitmq:setup-fabric 命令来设置交换机和队列

php www/index.php  rabbitmq:setup-fabric

要创建数据库表,您可以使用适用于 Postgresql 的 structure-psql.sql 和适用于 Mysql/MariaDB 的 structure-mysql.sql

使用 RabbitMqLoggerExtension

不需要进一步的操作。您的项目应将消息记录到 rabbitmq 交换机,如配置所示。

使用 ConsumerExtension

使用控制台

如果您已安装 Kdyby/Console 扩展,您可以使用以下命令

  • rabbitmqLoggerConsumer:queue 添加或从交换机中删除其他队列。
  • rabbitmqLoggerConsumer:list 列出并从队列中删除消息。
  • rabbitmqLoggerConsumer:save 列出、将消息保存到数据库并从队列中删除(需要 Kdyby/Doctine 扩展)。

rabbitmqLoggerConsumer:save从配置中描述的队列中获取消息时,rabbitmqLoggerConsumer:list需要队列名称作为参数,以避免意外地从队列中删除消息。您可以使用rabbitmqLoggerConsumer:queue来创建新队列。

php www/index.php rabbitmqLoggerConsumer:queue spy-whats-going-on exception  # create queue for 'exception' routing key
php www/index.php rabbitmqLoggerConsumer:list spy-whats-going-on        # print message and remove it from queue
....
php www/index.php rabbitmqLoggerConsumer:queue spy-whats-going-on -d    # delete queue

使用网格

在演示者中

use Sallyx\RabbitMqLogger\Controls\Doctrine\GridFactory;
...

   public function __construct(GridFactory $factory) {
        $this->gridFactory = $factory;
   }

    public function createComponentGrid($name) {
        return $this->gridFactory->create();
    }

在latte中

{control grid}

您需要添加资产,具体操作请参阅https://ublaboo.org/datagrid/页面上的说明。

结果

Ublaboo datagrid