【问题标题】:Symfony 4 enable logging with Monolog's Redis handlerSymfony 4 使用 Monolog 的 Redis 处理程序启用日志记录
【发布时间】:2019-09-02 07:33:29
【问题描述】:

我有一个连接到 Redis 的工作 ELK 堆栈。

我还有一个正在运行的无状态 Symfony 4 应用程序,我想将所有生产日志发送到我的 Redis。

我知道 Monolog 有一个 Redis 处理程序,但我不知道如果有其他方法,我应该如何调整 config/prod/monolog.yaml 文件来完成此操作。

这就是现在的样子:

monolog:
handlers:
    main:
        type: fingers_crossed
        action_level: error
        handler: nested
        excluded_http_codes: [404]
    nested:
        type: stream
        path: "php://stderr"
        level: debug
    console:
        type: console
        process_psr_3_messages: false
        channels: ["!event", "!doctrine"]
    deprecation:
        type: stream
        path: "php://stderr"
    deprecation_filter:
        type: filter
        handler: deprecation
        max_level: info
        channels: ["php"]

【问题讨论】:

    标签: symfony redis symfony4 monolog


    【解决方案1】:

    我采取的方法是,先安装predis客户端:

    composer require predis/predis
    

    然后创建一个自定义服务类,扩展Monolog包自带的RedisHandler类:

    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 服务器。就我而言,我的参数值是我的 Redis 服务器的 IP。

    我在类中添加了其他参数,例如端口和日志级别。您可以在实例化服务时设置它,就像使用主机参数一样。

    最后,在您的 monolog.yaml 配置文件中配置您的自定义日志处理程序服务。就我而言,我只需要配置如下的生产日志:

    handlers:
      custom:
        type: service
        id: monolog.handler.redis
        level: debug
        channels: ['!event']
    

    【讨论】:

      猜你喜欢
      • 2023-03-11
      • 2018-07-24
      • 2018-09-27
      • 1970-01-01
      • 2016-04-09
      • 2017-03-01
      • 2015-05-06
      • 1970-01-01
      • 2015-06-09
      相关资源
      最近更新 更多