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?
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
以防万一有人不想用记录器打扰自己,可以在QueryBuilder
上调用toString()
并查看请求。
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
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
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.