|
@@ -16,6 +16,7 @@ import org.elasticsearch.common.settings.Settings;
|
|
|
import org.elasticsearch.core.Nullable;
|
|
import org.elasticsearch.core.Nullable;
|
|
|
import org.elasticsearch.rest.RestRequest;
|
|
import org.elasticsearch.rest.RestRequest;
|
|
|
import org.elasticsearch.rest.RestResponse;
|
|
import org.elasticsearch.rest.RestResponse;
|
|
|
|
|
+import org.elasticsearch.rest.RestUtils;
|
|
|
import org.elasticsearch.tasks.Task;
|
|
import org.elasticsearch.tasks.Task;
|
|
|
import org.elasticsearch.transport.TransportService;
|
|
import org.elasticsearch.transport.TransportService;
|
|
|
|
|
|
|
@@ -33,6 +34,11 @@ class HttpTracer {
|
|
|
private volatile String[] tracerLogInclude;
|
|
private volatile String[] tracerLogInclude;
|
|
|
private volatile String[] tracerLogExclude;
|
|
private volatile String[] tracerLogExclude;
|
|
|
|
|
|
|
|
|
|
+ // for testing
|
|
|
|
|
+ HttpTracer() {
|
|
|
|
|
+ tracerLogInclude = tracerLogExclude = new String[0];
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
HttpTracer(Settings settings, ClusterSettings clusterSettings) {
|
|
HttpTracer(Settings settings, ClusterSettings clusterSettings) {
|
|
|
|
|
|
|
|
setTracerLogInclude(HttpTransportSettings.SETTING_HTTP_TRACE_LOG_INCLUDE.get(settings));
|
|
setTracerLogInclude(HttpTransportSettings.SETTING_HTTP_TRACE_LOG_INCLUDE.get(settings));
|
|
@@ -55,14 +61,17 @@ class HttpTracer {
|
|
|
@Nullable
|
|
@Nullable
|
|
|
HttpTracer maybeLogRequest(RestRequest restRequest, @Nullable Exception e) {
|
|
HttpTracer maybeLogRequest(RestRequest restRequest, @Nullable Exception e) {
|
|
|
if (logger.isTraceEnabled() && TransportService.shouldTraceAction(restRequest.uri(), tracerLogInclude, tracerLogExclude)) {
|
|
if (logger.isTraceEnabled() && TransportService.shouldTraceAction(restRequest.uri(), tracerLogInclude, tracerLogExclude)) {
|
|
|
|
|
+ // trace.id in the response log is included from threadcontext, which isn't set at request log time
|
|
|
|
|
+ // so include it here as part of the message
|
|
|
logger.trace(
|
|
logger.trace(
|
|
|
() -> format(
|
|
() -> format(
|
|
|
- "[%s][%s][%s][%s] received request from [%s]",
|
|
|
|
|
|
|
+ "[%s][%s][%s][%s] received request from [%s]%s",
|
|
|
restRequest.getRequestId(),
|
|
restRequest.getRequestId(),
|
|
|
restRequest.header(Task.X_OPAQUE_ID_HTTP_HEADER),
|
|
restRequest.header(Task.X_OPAQUE_ID_HTTP_HEADER),
|
|
|
restRequest.method(),
|
|
restRequest.method(),
|
|
|
restRequest.uri(),
|
|
restRequest.uri(),
|
|
|
- restRequest.getHttpChannel()
|
|
|
|
|
|
|
+ restRequest.getHttpChannel(),
|
|
|
|
|
+ RestUtils.extractTraceId(restRequest.header(Task.TRACE_PARENT_HTTP_HEADER)).map(t -> " trace.id: " + t).orElse("")
|
|
|
),
|
|
),
|
|
|
e
|
|
e
|
|
|
);
|
|
);
|
|
@@ -89,6 +98,7 @@ class HttpTracer {
|
|
|
long requestId,
|
|
long requestId,
|
|
|
boolean success
|
|
boolean success
|
|
|
) {
|
|
) {
|
|
|
|
|
+ // trace id is included in the ThreadContext for the response
|
|
|
logger.trace(
|
|
logger.trace(
|
|
|
() -> format(
|
|
() -> format(
|
|
|
"[%s][%s][%s][%s][%s] sent response to [%s] success [%s]",
|
|
"[%s][%s][%s][%s][%s] sent response to [%s] success [%s]",
|