monolog多种格式化程序php

时间:2018-07-10 11:18:40

标签: php logging monolog

我正在使用monolog并尝试使用2格式化程序。
 1.对于使用常规格式化程序的文件  2.使用带有logstash格式化程序的gelf处理程序

代码:

$logger = new Monolog\Logger("my-app");
$strHandle = new Monolog\Handler\RotatingFileHandler($settings['path'],$settings['max_files'], $settings['level']);
$formatter = new LogstashFormatter("name");
$strHandle->setFormatter($formatter);
$logger->pushProcessor(new Monolog\Processor\UidProcessor());
$handler = new \Monolog\Handler\GelfHandler(new \Gelf\Publisher(new \Gelf\Transport\TcpTransport("localhost", "1221")));
$logger->pushHandler($handler);
$logger->pushHandler($strHandle);
$logger->info("test");

这是有效的,但logstash的格式也在文件中 我想要类似的东西:

$ gelfHandler-> setFormatter($ formatter);

我尝试了此操作,但出现500错误

   $logger = new Monolog\Logger("my-app");
    $strHandle = new Monolog\Handler\RotatingFileHandler($settings['path'],$settings['max_files'], $settings['level']);
    $logger->pushProcessor(new Monolog\Processor\UidProcessor());
    $handler = new \Monolog\Handler\GelfHandler(new \Gelf\Publisher(new \Gelf\Transport\TcpTransport("localhost", "1221")));
    $formatter = new LogstashFormatter("name");
$handler->setFormatter($formatter);
    $logger->pushHandler($handler);
    $logger->pushHandler($strHandle);
    $logger->info("test");

1 个答案:

答案 0 :(得分:1)

我认为您只能将GelfMessageFormatterGelfHandler一起使用。 https://github.com/Seldaek/monolog/blob/master/doc/02-handlers-formatters-processors.md#formatters

您有确切的错误吗?您是否在没有LogstashFormatter的情况下尝试了Gelf?