Reputation: 148
I'm using org.elasticsearch.client.RestHighLevelClient to run queries.
According to the official documentation, it's possible to log requests in curl format:
I have added the following line to my log4j.properties:
log4j.logger.org.elasticsearch.client = debug
Now I see http requests, but, how can I set curl formatting?
Upvotes: 3
Views: 5388
Reputation: 101
For log4j version 2.x, add following configuration in log4j2.properties file.
# 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
Upvotes: 0
Reputation: 835
Just in case someone doesn't want to bother oneself with loggers, it's possible to call toString()
on QueryBuilder
and see a request.
Upvotes: 2
Reputation: 853
To enable trace for RestHighLevelClient 7.+ version to show url for rest calls made by elastic client. Do below steps
File level changes Add these dependencies in pom.xml
<!-- 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>
Changes in log4j2.properties file
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
Upvotes: 0
Reputation: 9320
According to their documentation, you need to enable specific tracer
logger, that is responsible specifically for curl format response.
You could achieve this in log4j 1.x with following lines:
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
Upvotes: 4