Skip to content

Commit 43da9a3

Browse files
committed
Merge branch '3.x' into 4.x
* 3.x: Fix 'hosts' key in Elastic 8 configuration
2 parents b3b0cad + a716f93 commit 43da9a3

File tree

2 files changed

+53
-0
lines changed

2 files changed

+53
-0
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
* Deprecate `sentry` and `raven` handler, use a `service` handler with [`sentry/sentry-symfony`](https://docs.sentry.io/platforms/php/guides/symfony/logs/) instead
1515
* Add configuration for Gelf encoders
1616
* Fix `host` configuration for `elastic_search` handler
17+
* Add `hosts` configuration for `elastica` handler
1718
* Add `enabled` option to `handlers` configuration
1819

1920
## 3.10.0 (2023-11-06)

tests/DependencyInjection/MonologExtensionTest.php

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111

1212
namespace Symfony\Bundle\MonologBundle\Tests\DependencyInjection;
1313

14+
use Monolog\Handler\ElasticaHandler;
15+
use Monolog\Handler\ElasticsearchHandler;
1416
use Monolog\Handler\FingersCrossed\ErrorLevelActivationStrategy;
1517
use Monolog\Handler\RollbarHandler;
1618
use Monolog\Processor\UidProcessor;
@@ -504,6 +506,56 @@ public function testWithLoggerChannelAutoconfiguration()
504506
], $container->getDefinition(ServiceWithChannel::class)->getTag('monolog.logger'));
505507
}
506508

509+
public function testElasticsearchAndElasticaHandlers()
510+
{
511+
$container = new ContainerBuilder();
512+
$container->setDefinition('elasticsearch.client', new Definition('Elasticsearch\\Client'));
513+
$container->setDefinition('elastica.client', new Definition('Elastica\\Client'));
514+
515+
$config = [[
516+
'handlers' => [
517+
'es_handler' => [
518+
'type' => 'elastic_search',
519+
'elasticsearch' => [
520+
'hosts' => ['es:9200'],
521+
],
522+
'index' => 'my-index',
523+
'document_type' => 'my-type',
524+
],
525+
'elastica_handler' => [
526+
'type' => 'elastica',
527+
'elasticsearch' => [
528+
'hosts' => ['es:9200'],
529+
],
530+
'index' => 'my-index',
531+
'document_type' => 'my-type',
532+
],
533+
],
534+
]];
535+
536+
$extension = new MonologExtension();
537+
$extension->load($config, $container);
538+
539+
$this->assertTrue($container->hasDefinition('monolog.handler.es_handler'));
540+
$this->assertTrue($container->hasDefinition('monolog.handler.elastica_handler'));
541+
542+
// Elasticsearch handler should receive the elasticsearch.client as first argument
543+
$esHandler = $container->getDefinition('monolog.handler.es_handler');
544+
$this->assertSame(ElasticsearchHandler::class,$esHandler->getClass());
545+
$esClient = $esHandler->getArgument(0);
546+
$this->assertInstanceOf(Definition::class, $esClient);
547+
$this->assertStringEndsWith('Elasticsearch\Client', $esClient->getClass());
548+
$this->assertSame(['hosts' => ['es:9200']], $esClient->getArgument(0));
549+
550+
// Elastica handler should receive the elastica.client as first argument
551+
$elasticaHandler = $container->getDefinition('monolog.handler.elastica_handler');
552+
$this->assertSame(ElasticaHandler::class,$elasticaHandler->getClass());
553+
$elasticaClient = $elasticaHandler->getArgument(0);
554+
$this->assertInstanceOf(Definition::class, $elasticaClient);
555+
$this->assertSame('Elastica\Client', $elasticaClient->getClass());
556+
$this->assertSame(['hosts' => ['es:9200'], 'transport' => 'Http'], $elasticaClient->getArgument(0));
557+
}
558+
507559
private function getContainer(array $config = [], array $thirdPartyDefinitions = []): ContainerBuilder
508560
{
509561
$container = new ContainerBuilder(new EnvPlaceholderParameterBag());

0 commit comments

Comments
 (0)