Php 独白多重格式化程序
我正在使用monolog并尝试使用2格式化程序。Php 独白多重格式化程序,php,logging,monolog,Php,Logging,Monolog,我正在使用monolog并尝试使用2格式化程序。 1.对于使用常规格式化程序的文件 2.将gelf处理程序与logstash格式化程序一起使用 代码: 这是可行的,但是logstash的格式也在文件中 我想要像这样的东西: $gelfHandler->setFormatter($formatter) 我试过了,但有500个错误 $logger = new Monolog\Logger("my-app"); $strHandle = new Monolog\Handler\Rotat
1.对于使用常规格式化程序的文件 2.将gelf处理程序与logstash格式化程序一起使用 代码: 这是可行的,但是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");
我认为您只能将
GelfMessageFormatter
与GelfHandler
一起使用
你有确切的错误吗?您是否尝试过不使用Gelf的
LogstashFormatter
?谢谢,但我需要logstash格式,并想为文件编写常规格式Get-Catchable致命错误:传递给Gelf\Publisher::publish()的参数1必须是Gelf\MessageInterface的实例,给定字符串,callYes,GelfMessageFormatter创建MessageInterface的消息对象,因此需要使用GelfMessageFormatter。也许Logstash会理解这种格式并在内部进行转换?没有logstash方面的经验:)但谷歌找到了一个插件
$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");