Настройте Monolog для отправки GELF через TCP в Symfony 4 - PullRequest
0 голосов
/ 24 июня 2019

В моем файле monolog.yaml есть следующая конфигурация:

monolog:
    handlers:
        main:
            type: stream
            path: "php://stdout"
            level: debug
            channels: ["!event"]
        gelf:
            type: gelf
            publisher:
                hostname: mygelfhost.com
                port: 12201
        console:
            type: console
            process_psr_3_messages: false
            channels: ["!event", "!doctrine", "!console"]

Но он только отправляет сообщения на mygelfhost.com с использованием UDP. Когда я пытался поставить:

hostname: tcp://mygelfhost.com

Я получаю следующую ошибку:

  Failed to create socket-client for udp://tcp://log-dev.hpa.lis-dev.net:12201: php_network_getaddresses: getaddrinfo failed: Name or service not known (0)  

Моя цель - отправлять журналы через TCP на один и тот же хост, я проверил конфигурацию здесь: https://github.com/symfony/monolog-bundle/blob/master/DependencyInjection/Configuration.php#L25 без возможных решений.

1 Ответ

0 голосов
/ 26 июня 2019

Вам необходимо указать транспорт для Гельфа.По умолчанию он использует UDP.

monolog:
    handlers:
        gelf:
            type: gelf
            id: my_tcp_gelf_publisher 

В ваших службах:

services:
    my_tcp_gelf_publisher:
        class: Gelf\Publisher
        arguments: [@gelf.tcp_transport]
    gelf.tcp_transport:
        class: Gelf\Transport\TcpTransport
        arguments:
            - "mygelfhost.com" # Hostname
            - 12201 #port                  

Что-то вроде этого должно работать, хотя я не проверял код, хотя.На основании определения издателя и примера конфигурации из: https://github.com/bzikarsky/gelf-php

...