/** * Returns the authority of the {@link Request}. * * @return the authority. {@code "?"} if the {@link Request} has failed even before its headers are * properly constructed. * * @throws RequestLogAvailabilityException if this property is not available yet */ default String authority() { final String authority = requestHeaders().authority(); assert authority != null; return authority; }
private void exportHttpRequestHeaders(Map<String, String> out, RequestLog log) { if (httpReqHeaders == null || !log.isAvailable(RequestLogAvailability.REQUEST_HEADERS)) { return; } exportHttpHeaders(out, log.requestHeaders(), httpReqHeaders); }
remoteServiceName = this.remoteServiceName; } else { final String authority = log.requestHeaders().authority(); if (!"?".equals(authority)) { remoteServiceName = authority;
.append(log.requestHeaders().path());
private List<Tag> buildTags(RequestLog log) { final RequestContext ctx = log.context(); final Object requestContent = log.requestContent(); String methodName = null; if (requestContent instanceof RpcRequest) { methodName = ((RpcRequest) requestContent).method(); } if (methodName == null) { final HttpHeaders requestHeaders = log.requestHeaders(); final HttpMethod httpMethod = requestHeaders.method(); if (httpMethod != null) { methodName = httpMethod.name(); } } if (methodName == null) { methodName = MoreObjects.firstNonNull(log.method().name(), "__UNKNOWN_METHOD__"); } final List<Tag> tags = new ArrayList<>(4); // method, hostNamePattern, pathMapping, status tags.add(Tag.of("method", methodName)); if (ctx instanceof ServiceRequestContext) { final ServiceRequestContext sCtx = (ServiceRequestContext) ctx; tags.add(Tag.of("hostnamePattern", sCtx.virtualHost().hostnamePattern())); tags.add(Tag.of("pathMapping", sCtx.pathMapping().meterTag())); } return tags; } };
final String host = log.requestHeaders().authority(); assert host != null; span.tag("http.host", host);
private static void exportAuthority(Map<String, String> out, RequestContext ctx, RequestLog log) { final Set<RequestLogAvailability> availabilities = log.availabilities(); if (availabilities.contains(RequestLogAvailability.REQUEST_HEADERS)) { final String authority = getAuthority(ctx, log.requestHeaders()); if (authority != null) { out.put(REQ_AUTHORITY.mdcKey, authority);
@Test(timeout = 10000) public void testMessageLogsForException() throws Exception { final HelloService.Iface client = Clients.newClient(clientFactory(), getURI(Handlers.EXCEPTION), Handlers.EXCEPTION.iface(), clientOptions); recordMessageLogs = true; assertThatThrownBy(() -> client.hello("trustin")).isInstanceOf(TApplicationException.class); final RequestLog log = requestLogs.take(); assertThat(log.requestHeaders()).isInstanceOf(HttpHeaders.class); assertThat(log.requestContent()).isInstanceOf(RpcRequest.class); assertThat(log.rawRequestContent()).isInstanceOf(ThriftCall.class); final RpcRequest request = (RpcRequest) log.requestContent(); assertThat(request.serviceType()).isEqualTo(HelloService.Iface.class); assertThat(request.method()).isEqualTo("hello"); assertThat(request.params()).containsExactly("trustin"); final ThriftCall rawRequest = (ThriftCall) log.rawRequestContent(); assertThat(rawRequest.header().type).isEqualTo(TMessageType.CALL); assertThat(rawRequest.header().name).isEqualTo("hello"); assertThat(rawRequest.args()).isInstanceOf(HelloService.hello_args.class); assertThat(((HelloService.hello_args) rawRequest.args()).getName()).isEqualTo("trustin"); assertThat(log.responseHeaders()).isInstanceOf(HttpHeaders.class); assertThat(log.responseContent()).isInstanceOf(RpcResponse.class); assertThat(log.rawResponseContent()).isInstanceOf(ThriftReply.class); final RpcResponse response = (RpcResponse) log.responseContent(); assertThat(response.cause()).isNotNull(); final ThriftReply rawResponse = (ThriftReply) log.rawResponseContent(); assertThat(rawResponse.header().type).isEqualTo(TMessageType.EXCEPTION); assertThat(rawResponse.header().name).isEqualTo("hello"); assertThat(rawResponse.exception()).isNotNull(); }
assertThat(log.requestHeaders()).isInstanceOf(HttpHeaders.class); assertThat(log.requestContent()).isInstanceOf(RpcRequest.class); assertThat(log.rawRequestContent()).isInstanceOf(ThriftCall.class);
@Test(timeout = 10000) public void testMessageLogsForOneWay() throws Exception { final OnewayHelloService.Iface client = Clients.newClient(clientFactory(), getURI(Handlers.HELLO), Handlers.ONEWAYHELLO.iface(), clientOptions); recordMessageLogs = true; client.hello("trustin"); final RequestLog log = requestLogs.take(); assertThat(log.requestHeaders()).isInstanceOf(HttpHeaders.class); assertThat(log.requestContent()).isInstanceOf(RpcRequest.class); assertThat(log.rawRequestContent()).isInstanceOf(ThriftCall.class); final RpcRequest request = (RpcRequest) log.requestContent(); assertThat(request.serviceType()).isEqualTo(OnewayHelloService.Iface.class); assertThat(request.method()).isEqualTo("hello"); assertThat(request.params()).containsExactly("trustin"); final ThriftCall rawRequest = (ThriftCall) log.rawRequestContent(); assertThat(rawRequest.header().type).isEqualTo(TMessageType.ONEWAY); assertThat(rawRequest.header().name).isEqualTo("hello"); assertThat(rawRequest.args()).isInstanceOf(OnewayHelloService.hello_args.class); assertThat(((OnewayHelloService.hello_args) rawRequest.args()).getName()).isEqualTo("trustin"); assertThat(log.responseHeaders()).isInstanceOf(HttpHeaders.class); assertThat(log.responseContent()).isInstanceOf(RpcResponse.class); assertThat(log.rawResponseContent()).isNull(); final RpcResponse response = (RpcResponse) log.responseContent(); assertThat(response.get()).isNull(); }
assertThat(log.requestHeaders()).isInstanceOf(HttpHeaders.class); assertThat(log.requestContent()).isInstanceOf(RpcRequest.class); assertThat(log.rawRequestContent()).isInstanceOf(ThriftCall.class);
assertThat(log.requestHeaders()).isInstanceOf(HttpHeaders.class); assertThat(log.requestContent()).isInstanceOf(RpcRequest.class); assertThat(log.rawRequestContent()).isInstanceOf(ThriftCall.class);
private void propagateRequestSideLog(RequestLog child) { child.addListener(log -> startRequest0(log.channel(), log.sessionProtocol(), null, log.requestStartTimeNanos(), log.requestStartTimeMicros(), true), REQUEST_START); child.addListener(log -> serializationFormat(log.serializationFormat()), SCHEME); child.addListener(log -> requestFirstBytesTransferred(log.requestFirstBytesTransferredTimeNanos()), REQUEST_FIRST_BYTES_TRANSFERRED); child.addListener(log -> requestHeaders(log.requestHeaders()), REQUEST_HEADERS); child.addListener(log -> requestContent(log.requestContent(), log.rawRequestContent()), REQUEST_CONTENT); child.addListener(log -> endRequest0(log.requestCause(), log.requestEndTimeNanos()), REQUEST_END); }
private void exportHttpRequestHeaders(Map<String, String> out, RequestLog log) { if (httpReqHeaders == null || !log.isAvailable(RequestLogAvailability.REQUEST_HEADERS)) { return; } exportHttpHeaders(out, log.requestHeaders(), httpReqHeaders); }
private void exportHttpRequestHeaders(Map<String, String> out, RequestLog log) { if (httpReqHeaders == null || !log.isAvailable(RequestLogAvailability.REQUEST_HEADERS)) { return; } exportHttpHeaders(out, log.requestHeaders(), httpReqHeaders); }
private static void exportAuthority(Map<String, String> out, RequestContext ctx, RequestLog log) { final Set<RequestLogAvailability> availabilities = log.availabilities(); if (availabilities.contains(RequestLogAvailability.REQUEST_HEADERS)) { final String authority = getAuthority(ctx, log.requestHeaders()); if (authority != null) { out.put(REQ_AUTHORITY.mdcKey, authority);
private static void exportAuthority(Map<String, String> out, RequestContext ctx, RequestLog log) { final Set<RequestLogAvailability> availabilities = log.availabilities(); if (availabilities.contains(RequestLogAvailability.REQUEST_HEADERS)) { final String authority = getAuthority(ctx, log.requestHeaders()); if (authority != null) { out.put(REQ_AUTHORITY.mdcKey, authority);