J'utilise org.elasticsearch.client.RestHighLevelClient pour exécuter des requêtes.
Selon la documentation officielle, il est possible de journaliser les requêtes au format curl:
J'ai ajouté la ligne suivante à mon log4j.properties:
log4j.logger.org.elasticsearch.client = debug
Je vois maintenant des requêtes http, mais comment puis-je définir le formatage curl?
4 Réponses :
Selon leur documentation, vous devez activer un enregistreur tracer
spécifique, qui est spécifiquement responsable de la réponse au format curl.
Vous pouvez y parvenir dans log4j 1.x strong > avec les lignes suivantes:
log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=System.out log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss}] [%-5p] %c{1}:%L - %m%n log4j.logger.tracer=TRACE, stdout
Pour activer la trace pour la version RestHighLevelClient 7. + pour afficher l'URL des appels de repos effectués par le client élastique. Faites les étapes ci-dessous
Modifications au niveau du fichier Ajoutez ces dépendances dans pom.xml
status = error name = PropertiesConfig filters = threshold filter.threshold.type = ThresholdFilter filter.threshold.level = debug appenders = console appender.console.type = Console appender.console.name = STDOUT appender.console.layout.type = PatternLayout appender.console.layout.pattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n rootLogger.level = debug rootLogger.appenderRefs = stdout rootLogger.appenderRef.stdout.ref = STDOUT log4j.logger.tracer=TRACE, stdout
Modifications dans le fichier log4j2.properties
<!-- log4j2 --> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>2.11.2</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.11.2</version> </dependency> <!-- slf4j to make log4j work with commons logging used by elastic --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.12</version> </dependency> <!-- To bind log4j2 to sl4j --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.12</version> <scope>test</scope> </dependency> <!-- To bind commons logging used by elastic to sl4j --> <dependency> <groupId>org.slf4j</groupId> <artifactId>jcl-over-slf4j</artifactId> <version>1.7.12</version> </dependency> <!-- commons logging used by elastic --> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.2.3</version> <exclusions> <exclusion> <!-- Defined below --> <artifactId>slf4j-api</artifactId> <groupId>org.slf4j</groupId> </exclusion> </exclusions> </dependency>
Juste au cas où quelqu'un ne voudrait pas se soucier des enregistreurs, il est possible d'appeler toString ()
sur QueryBuilder
et de voir une requête.
Pour log4j version 2.x , ajoutez la configuration suivante dans le fichier log4j2.properties .
# Debugging elasticsearch client loggers=esclient, esclientsniffer, tracer logger.esclient.name = org.elasticsearch.client logger.esclient.level = trace logger.esclient.appenderRefs = stdout logger.esclient.appenderRef.stdout.ref = STDOUT logger.esclientsniffer.name = org.elasticsearch.client.sniffer logger.esclientsniffer.level = trace logger.esclientsniffer.appenderRefs = stdout logger.esclientsniffer.appenderRef.stdout.ref = STDOUT logger.tracer.name=tracer logger.tracer.level=trace logger.tracer.appenderRefs = stdout logger.tracer.appenderRef.stdout.ref = STDOUT