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