Подход, который я выбрал, заключался в первой установке клиента predis:
composer require predis/predis
Затем создайте пользовательский класс обслуживания, который расширяет класс RedisHandler, который входит в пакет Monolog:
namespace App\Service\Monolog\Handler;
use Monolog\Handler\RedisHandler;
use Monolog\Logger;
use Predis\Client as PredisClient;
class Redis extends RedisHandler
{
public function __construct( $host, $port = 6379, $level = Logger::DEBUG, $bubble = true, $capSize = false)
{
$predis = new PredisClient( "tcp://$host:$port" );
$key = 'logstash';
parent::__construct($predis, $key, $level, $bubble, $capSize);
}
}
Далее, активируйте только что созданный сервис в конфигурационном файле services.yml:
services:
monolog.handler.redis:
class: App\Service\Monolog\Handler\Redis
arguments: [ '%redis.host%' ]
Убедитесь, что параметр redis.host установлен и указывает на ваш сервер Redis. В моем случае моим параметром является IP-адрес моего сервера Redis.
Я добавил в класс другие параметры, такие как уровень порта и журнала. Вы можете установить его в момент создания вашего сервиса, как с параметром host.
Наконец, настройте свою собственную службу обработчика журналов в файле конфигурации monolog.yaml. В моем случае мне нужны только журналы производства с конфигурацией, как указано ниже:
handlers:
custom:
type: service
id: monolog.handler.redis
level: debug
channels: ['!event']