@Override public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { String requestLine = request.getMethod() + " " + request.getRequestURI() + " " + request.getProtocol(); AuditLogEntry logEntry = new AuditLogEntry(requestLine, request.getRemoteUser(), InetAddress.getByName(request.getRemoteAddr()).getHostAddress(), Collections.<String, String>emptyMap()); logEntry.setResponse(response.getStatus(), ((Response) response).getContentCount()); logger.trace(logEntry.toString()); } }
private void auditLogIfNeeded(HttpRequest request, HttpResponse response, Channel channel) { if (!auditLogEnabled) { return; } AuditLogEntry logEntry = new AuditLogEntry(request, Networks.getIP(channel.remoteAddress())); logEntry.setResponse(response); AUDIT_LOGGER.trace(logEntry.toString()); }
private void createLogEntry(HttpRequest httpRequest, HttpResponseStatus responseStatus) throws UnknownHostException { InetAddress clientAddr = InetAddress.getByName(Objects.firstNonNull(SecurityRequestContext.getUserIP(), "0.0.0.0")); AuditLogEntry logEntry = new AuditLogEntry(httpRequest, clientAddr.getHostAddress()); logEntry.setUserName(authenticationContext.getPrincipal().getName()); logEntry.setResponse(responseStatus.code(), 0L); AUDIT_LOG.trace(logEntry.toString()); } }
private void createLogEntry(HttpRequest httpRequest, HttpResponseStatus responseStatus) throws UnknownHostException { InetAddress clientAddr = InetAddress.getByName(Objects.firstNonNull(SecurityRequestContext.getUserIP(), "0.0.0.0")); AuditLogEntry logEntry = new AuditLogEntry(httpRequest, clientAddr.getHostAddress()); logEntry.setUserName(authenticationContext.getPrincipal().getName()); logEntry.setResponse(responseStatus.code(), 0L); AUDIT_LOG.trace(logEntry.toString()); } }
@Override public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) throws Exception { if (logEntry == null) { ctx.write(msg, promise); return; } if (msg instanceof HttpResponse) { HttpResponse response = (HttpResponse) msg; logEntry.setResponse(response); // If no need to log the response body, we can emit the audit log if (!logResponseBody) { emitAuditLog(); } } else if (msg instanceof HttpContent && logResponseBody) { ByteBuf content = ((HttpContent) msg).content(); if (content.isReadable()) { logEntry.appendResponseBody(content.toString(StandardCharsets.UTF_8)); } // If need to log the response body, emit the audit log when all response contents are received if (msg instanceof LastHttpContent) { emitAuditLog(); } } ctx.write(msg, promise); }