diff options
author | Justin Clark-Casey (justincc) | 2013-06-12 21:34:20 +0100 |
---|---|---|
committer | Justin Clark-Casey (justincc) | 2013-06-12 21:34:20 +0100 |
commit | 47b6e78790be5a4b7d8a0f4c860f1e2f6f87b137 (patch) | |
tree | 8c0f7b31f2b3b6b086cdd65b367654798bd3e6fc | |
parent | Uncomment Mic's code and split to create new regression TestAddTemporaryAsset... (diff) | |
download | opensim-SC_OLD-47b6e78790be5a4b7d8a0f4c860f1e2f6f87b137.zip opensim-SC_OLD-47b6e78790be5a4b7d8a0f4c860f1e2f6f87b137.tar.gz opensim-SC_OLD-47b6e78790be5a4b7d8a0f4c860f1e2f6f87b137.tar.bz2 opensim-SC_OLD-47b6e78790be5a4b7d8a0f4c860f1e2f6f87b137.tar.xz |
Implement logging of first 80 characters (debug level 5) or full body data (debug level 6) on outgoing requests, depending on debug level
This is set via "debug http out <level>"
This matches the existing debug level behaviours for logging incoming http data
-rw-r--r-- | OpenSim/Framework/Servers/MainServer.cs | 8 | ||||
-rw-r--r-- | OpenSim/Framework/WebUtil.cs | 54 |
2 files changed, 57 insertions, 5 deletions
diff --git a/OpenSim/Framework/Servers/MainServer.cs b/OpenSim/Framework/Servers/MainServer.cs index cfd34bb..d189580 100644 --- a/OpenSim/Framework/Servers/MainServer.cs +++ b/OpenSim/Framework/Servers/MainServer.cs | |||
@@ -121,12 +121,14 @@ namespace OpenSim.Framework.Servers | |||
121 | + " level >= 2 then long warnings are logged when receiving bad input data.\n" | 121 | + " level >= 2 then long warnings are logged when receiving bad input data.\n" |
122 | + " level >= 3 then short notices about all incoming non-poll HTTP requests are logged.\n" | 122 | + " level >= 3 then short notices about all incoming non-poll HTTP requests are logged.\n" |
123 | + " level >= 4 then the time taken to fulfill the request is logged.\n" | 123 | + " level >= 4 then the time taken to fulfill the request is logged.\n" |
124 | + " level >= 5 then a sample from the beginning of the incoming data is logged.\n" | 124 | + " level >= 5 then a sample from the beginning of the data is logged.\n" |
125 | + " level >= 6 then the entire incoming data is logged.\n" | 125 | + " level >= 6 then the entire data is logged.\n" |
126 | + " no level is specified then the current level is returned.\n\n" | 126 | + " no level is specified then the current level is returned.\n\n" |
127 | + "If out or all and\n" | 127 | + "If out or all and\n" |
128 | + " level >= 3 then short notices about all outgoing requests going through WebUtil are logged.\n" | 128 | + " level >= 3 then short notices about all outgoing requests going through WebUtil are logged.\n" |
129 | + " level >= 4 then the time taken to fulfill the request is logged.\n", | 129 | + " level >= 4 then the time taken to fulfill the request is logged.\n" |
130 | + " level >= 5 then a sample from the beginning of the data is logged.\n" | ||
131 | + " level >= 6 then the entire data is logged.\n", | ||
130 | HandleDebugHttpCommand); | 132 | HandleDebugHttpCommand); |
131 | } | 133 | } |
132 | 134 | ||
diff --git a/OpenSim/Framework/WebUtil.cs b/OpenSim/Framework/WebUtil.cs index 701fbb0..4599f62 100644 --- a/OpenSim/Framework/WebUtil.cs +++ b/OpenSim/Framework/WebUtil.cs | |||
@@ -151,6 +151,39 @@ namespace OpenSim.Framework | |||
151 | } | 151 | } |
152 | } | 152 | } |
153 | 153 | ||
154 | public static void LogOutgoingDetail(Stream outputStream) | ||
155 | { | ||
156 | using (StreamReader reader = new StreamReader(Util.Copy(outputStream), Encoding.UTF8)) | ||
157 | { | ||
158 | string output; | ||
159 | |||
160 | if (DebugLevel == 5) | ||
161 | { | ||
162 | const int sampleLength = 80; | ||
163 | char[] sampleChars = new char[sampleLength]; | ||
164 | reader.Read(sampleChars, 0, sampleLength); | ||
165 | output = new string(sampleChars); | ||
166 | } | ||
167 | else | ||
168 | { | ||
169 | output = reader.ReadToEnd(); | ||
170 | } | ||
171 | |||
172 | LogOutgoingDetail(output); | ||
173 | } | ||
174 | } | ||
175 | |||
176 | public static void LogOutgoingDetail(string output) | ||
177 | { | ||
178 | if (DebugLevel == 5) | ||
179 | { | ||
180 | output = output.Substring(0, 80); | ||
181 | output = output + "..."; | ||
182 | } | ||
183 | |||
184 | m_log.DebugFormat("[WEB UTIL]: {0}", output.Replace("\n", @"\n")); | ||
185 | } | ||
186 | |||
154 | private static OSDMap ServiceOSDRequestWorker(string url, OSDMap data, string method, int timeout, bool compressed) | 187 | private static OSDMap ServiceOSDRequestWorker(string url, OSDMap data, string method, int timeout, bool compressed) |
155 | { | 188 | { |
156 | int reqnum = RequestNumber++; | 189 | int reqnum = RequestNumber++; |
@@ -178,7 +211,11 @@ namespace OpenSim.Framework | |||
178 | // If there is some input, write it into the request | 211 | // If there is some input, write it into the request |
179 | if (data != null) | 212 | if (data != null) |
180 | { | 213 | { |
181 | strBuffer = OSDParser.SerializeJsonString(data); | 214 | strBuffer = OSDParser.SerializeJsonString(data); |
215 | |||
216 | if (DebugLevel >= 5) | ||
217 | LogOutgoingDetail(strBuffer); | ||
218 | |||
182 | byte[] buffer = System.Text.Encoding.UTF8.GetBytes(strBuffer); | 219 | byte[] buffer = System.Text.Encoding.UTF8.GetBytes(strBuffer); |
183 | 220 | ||
184 | if (compressed) | 221 | if (compressed) |
@@ -357,6 +394,10 @@ namespace OpenSim.Framework | |||
357 | if (data != null) | 394 | if (data != null) |
358 | { | 395 | { |
359 | queryString = BuildQueryString(data); | 396 | queryString = BuildQueryString(data); |
397 | |||
398 | if (DebugLevel >= 5) | ||
399 | LogOutgoingDetail(queryString); | ||
400 | |||
360 | byte[] buffer = System.Text.Encoding.UTF8.GetBytes(queryString); | 401 | byte[] buffer = System.Text.Encoding.UTF8.GetBytes(queryString); |
361 | 402 | ||
362 | request.ContentLength = buffer.Length; | 403 | request.ContentLength = buffer.Length; |
@@ -767,6 +808,9 @@ namespace OpenSim.Framework | |||
767 | int length = (int)buffer.Length; | 808 | int length = (int)buffer.Length; |
768 | request.ContentLength = length; | 809 | request.ContentLength = length; |
769 | 810 | ||
811 | if (WebUtil.DebugLevel >= 5) | ||
812 | WebUtil.LogOutgoingDetail(buffer); | ||
813 | |||
770 | request.BeginGetRequestStream(delegate(IAsyncResult res) | 814 | request.BeginGetRequestStream(delegate(IAsyncResult res) |
771 | { | 815 | { |
772 | Stream requestStream = request.EndGetRequestStream(res); | 816 | Stream requestStream = request.EndGetRequestStream(res); |
@@ -954,6 +998,9 @@ namespace OpenSim.Framework | |||
954 | length = (int)obj.Length; | 998 | length = (int)obj.Length; |
955 | request.ContentLength = length; | 999 | request.ContentLength = length; |
956 | 1000 | ||
1001 | if (WebUtil.DebugLevel >= 5) | ||
1002 | WebUtil.LogOutgoingDetail(buffer); | ||
1003 | |||
957 | Stream requestStream = null; | 1004 | Stream requestStream = null; |
958 | try | 1005 | try |
959 | { | 1006 | { |
@@ -1096,6 +1143,9 @@ namespace OpenSim.Framework | |||
1096 | int length = (int)buffer.Length; | 1143 | int length = (int)buffer.Length; |
1097 | request.ContentLength = length; | 1144 | request.ContentLength = length; |
1098 | 1145 | ||
1146 | if (WebUtil.DebugLevel >= 5) | ||
1147 | WebUtil.LogOutgoingDetail(buffer); | ||
1148 | |||
1099 | Stream requestStream = null; | 1149 | Stream requestStream = null; |
1100 | try | 1150 | try |
1101 | { | 1151 | { |
@@ -1198,4 +1248,4 @@ namespace OpenSim.Framework | |||
1198 | return deserial; | 1248 | return deserial; |
1199 | } | 1249 | } |
1200 | } | 1250 | } |
1201 | } | 1251 | } \ No newline at end of file |