View Javadoc

1   package ch.qos.logback.access.pattern;
2   
3   import java.util.List;
4   
5   import ch.qos.logback.access.spi.AccessEvent;
6   import ch.qos.logback.core.CoreConstants;
7   
8   public class FullResponseConverter extends AccessConverter {
9   
10    @Override
11    public String convert(AccessEvent ae) {
12      StringBuffer buf = new StringBuffer();
13      
14      buf.append("HTTP/1.1 ");
15      int statusCode = ae.getStatusCode();
16      buf.append(statusCode);
17      buf.append(" ");
18      buf.append(getStatusCodeDescription(statusCode));
19      buf.append(CoreConstants.LINE_SEPARATOR);
20      
21      List<String> hnList = ae.getResponseHeaderNameList();
22      for(String headerName: hnList) {
23        buf.append(headerName);
24        buf.append(": ");
25        buf.append(ae.getResponseHeader(headerName));
26        buf.append(CoreConstants.LINE_SEPARATOR);
27      }
28      buf.append(CoreConstants.LINE_SEPARATOR);
29      buf.append(ae.getResponseContent());
30      buf.append(CoreConstants.LINE_SEPARATOR);
31      return buf.toString();
32    }
33  
34    static String getStatusCodeDescription(int sc) {
35      switch(sc) {
36      case 200: return "OK";
37      case 201: return "Created";
38      case 202: return "Accepted";
39      case 203: return "Non-Authoritative Information";
40      case 204: return "No Content";
41      case 205: return "Reset Content";
42      case 206: return "Partial Content";
43      case 300: return "Multiple Choices";
44      case 301: return "Moved Permanently";
45      case 302: return "Found";
46      case 303: return "See Other";
47      case 304: return "Not Modified";
48      case 305: return "Use Proxy";
49      case 306: return "(Unused)";
50      case 307: return "Temporary Redirect";
51      case 400: return "Bad Request";
52      case 401: return "Unauthorized";
53      case 402: return "Payment Required";
54      case 403: return "Forbidden";
55      case 404: return "Not Found";
56      case 405: return "Method Not Allowed";
57      case 406: return "Not Acceptable";
58      case 407: return "Proxy Authentication Required";
59      case 408: return "Request Timeout";
60      case 409: return "Conflict";
61      case 410: return "Gone";
62      case 411: return "Length Required";
63      case 412: return "Precondition Failed";
64      case 413: return "Request Entity Too Large";
65      case 414: return "Request-URI Too Long";
66      case 415: return "Unsupported Media Type";
67      case 416: return "Requested Range Not Satisfiable";
68      case 417: return "Expectation Failed";
69      case 500: return "Internal Server Error";
70      case 501: return "Not Implemented";
71      case 502: return "Bad Gateway";
72      case 503: return "Service Unavailable";
73      case 504: return "Gateway Timeout";
74      case 505: return "HTTP Version Not Supported";
75      default: return "NA";
76      }
77    }
78  }