Skip to content

Commit

Permalink
Merge pull request #532 from joakime/fix-jetty-requestlog
Browse files Browse the repository at this point in the history
Fixing behavior of logback-access in the modern era
  • Loading branch information
ceki authored Aug 19, 2022
2 parents e31609b + 453f597 commit ca0cf17
Show file tree
Hide file tree
Showing 5 changed files with 296 additions and 90 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
/**
* Logback: the reliable, generic, fast and flexible logging framework.
* Copyright (C) 1999-2015, QOS.ch. All rights reserved.
*
* This program and the accompanying materials are dual-licensed under
* either the terms of the Eclipse Public License v1.0 as published by
* the Eclipse Foundation
*
* or (per the licensee's choosing)
*
* under the terms of the GNU Lesser General Public License version 2.1
* as published by the Free Software Foundation.
*/
package ch.qos.logback.access.jetty;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

import ch.qos.logback.access.spi.ServerAdapter;
import org.eclipse.jetty.http.HttpField;
import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.server.Response;

/**
* A Jetty 9.4.x and 10.0.x specific implementation of the {@link ServerAdapter} interface.
*
* @author Sébastien Pennec
* @author Ceki Gulcu
* @author Joakim Erdfelt
*/
public class JettyModernServerAdapter extends JettyServerAdapter
{
public JettyModernServerAdapter(Request jettyRequest, Response jettyResponse) {
super(jettyRequest, jettyResponse);
}

@Override
public long getContentLength() {
return response.getHttpChannel().getBytesWritten();
}

@Override
public int getStatusCode() {
return response.getCommittedMetaData().getStatus();
}

@Override
public long getRequestTimestamp() {
return request.getTimeStamp();
}

@Override
public Map<String, String> buildResponseHeaderMap() {
Map<String, String> responseHeaderMap = new HashMap<String, String>();
Iterator<HttpField> httpFieldIter = response.getHttpFields().iterator();
while (httpFieldIter.hasNext()) {
HttpField httpField = httpFieldIter.next();
String key = httpField.getName();
String value = httpField.getValue();
responseHeaderMap.put(key, value);
}
return responseHeaderMap;
}

}
Loading

0 comments on commit ca0cf17

Please sign in to comment.