我在我的honolog.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"]
,但它仅使用UDP将消息发送到mygelfhost.com。当我尝试放置时:
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/symfony/monolog-bundle/blob/blob/master/master/depparendendentignity/configuration/configuration.php#l25 with with with没有可能的解决方案。
在 @chase的答案中构建:
monolog:
handlers:
gelf:
type: gelf
publisher: my_tcp_gelf_publisher
上面的区别是my_tc_gelf_publisher是发布者对象,而不是处理程序对象。您想告诉处理程序,哪个出版商要使用&quort" my_tc_gelf_publisher&quot&quot&quort&quort&quort&quort at services中的定义。yaml
in services.yaml:
services:
my_tcp_gelf_publisher:
class: GelfPublisher
arguments: ["@gelf.tcp_transport"]
gelf.tcp_transport:
class: GelfTransportTcpTransport
arguments:
- "mygelfhost.com" # Hostname
- 12201 #port
这几乎是相同的,除非您需要在引号中将 @gelf.tcp_transport服务参考放置,否则您会遇到缩放器错误。
奖励提示,如果您决定配置运输以使用端口12202(gelf transport tcptransport的SSL端口(,请确保确保您的端点支持SSL,并提供正确配置的SSLOPTIONS对象,否则请使用标准端口12201(或任何其他端口(。
您需要指定GELF的传输。默认情况下它使用UDP。
monolog:
handlers:
gelf:
type: gelf
id: my_tcp_gelf_publisher
在您的服务中:
services:
my_tcp_gelf_publisher:
class: GelfPublisher
arguments: [@gelf.tcp_transport]
gelf.tcp_transport:
class: GelfTransportTcpTransport
arguments:
- "mygelfhost.com" # Hostname
- 12201 #port
类似的东西应该起作用,但是我还没有测试过代码。基于定义发布者和配置示例:https://github.com/bzikarsky/gelf-php