1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package edu.internet2.middleware.shibboleth.common.log;
19
20 import javax.servlet.http.HttpServletRequest;
21
22 import org.joda.time.DateTime;
23 import org.joda.time.DateTimeZone;
24 import org.joda.time.format.DateTimeFormatter;
25 import org.joda.time.format.ISODateTimeFormat;
26 import org.opensaml.xml.util.DatatypeHelper;
27
28 import edu.internet2.middleware.shibboleth.common.util.HttpHelper;
29
30
31
32
33 public class AccessLogEntry {
34
35
36 public static final String ACCESS_LOGGER_NAME = "Shibboleth-Access";
37
38
39 private static DateTimeFormatter dateFormatter = ISODateTimeFormat.basicDateTimeNoMillis();
40
41
42 private DateTime requestTime;
43
44
45 private String remoteHost;
46
47
48 private String serverHost;
49
50
51 private int serverPort;
52
53
54 private String requestPath;
55
56
57
58
59
60
61 public AccessLogEntry(HttpServletRequest request) {
62 requestTime = new DateTime();
63 remoteHost = request.getRemoteHost();
64 serverHost = request.getServerName();
65 serverPort = request.getServerPort();
66 requestPath = HttpHelper.getRequestUriWithoutContext(request);
67 }
68
69
70
71
72
73
74
75
76
77 public AccessLogEntry(String remote, String host, int port, String path) {
78 requestTime = new DateTime();
79 remoteHost = DatatypeHelper.safeTrimOrNullString(remote);
80 serverHost = DatatypeHelper.safeTrimOrNullString(host);
81 serverPort = port;
82 requestPath = DatatypeHelper.safeTrimOrNullString(path);
83 }
84
85
86
87
88
89
90 public String getRemoteHost() {
91 return remoteHost;
92 }
93
94
95
96
97
98
99 public String getRequestPath() {
100 return requestPath;
101 }
102
103
104
105
106
107
108 public DateTime getRequestTime(){
109 return requestTime;
110 }
111
112
113
114
115
116
117 public String getServerHost() {
118 return serverHost;
119 }
120
121
122
123
124
125
126 public int getServerPort() {
127 return serverPort;
128 }
129
130
131 public String toString() {
132 StringBuilder entryString = new StringBuilder();
133
134 entryString.append(getRequestTime().toString(dateFormatter.withZone(DateTimeZone.UTC)));
135 entryString.append("|");
136
137 entryString.append(getRemoteHost());
138 entryString.append("|");
139
140 entryString.append(getServerHost());
141 entryString.append(":");
142 entryString.append(getServerPort());
143 entryString.append("|");
144
145 entryString.append(getRequestPath());
146 entryString.append("|");
147
148 return entryString.toString();
149 }
150 }