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 datacpu-performance
parent
135e10ba09
commit
47b6e78790
|
@ -121,12 +121,14 @@ namespace OpenSim.Framework.Servers
|
|||
+ " level >= 2 then long warnings are logged when receiving bad input data.\n"
|
||||
+ " level >= 3 then short notices about all incoming non-poll HTTP requests are logged.\n"
|
||||
+ " level >= 4 then the time taken to fulfill the request is logged.\n"
|
||||
+ " level >= 5 then a sample from the beginning of the incoming data is logged.\n"
|
||||
+ " level >= 6 then the entire incoming data is logged.\n"
|
||||
+ " level >= 5 then a sample from the beginning of the data is logged.\n"
|
||||
+ " level >= 6 then the entire data is logged.\n"
|
||||
+ " no level is specified then the current level is returned.\n\n"
|
||||
+ "If out or all and\n"
|
||||
+ " level >= 3 then short notices about all outgoing requests going through WebUtil are logged.\n"
|
||||
+ " level >= 4 then the time taken to fulfill the request is logged.\n",
|
||||
+ " level >= 4 then the time taken to fulfill the request is logged.\n"
|
||||
+ " level >= 5 then a sample from the beginning of the data is logged.\n"
|
||||
+ " level >= 6 then the entire data is logged.\n",
|
||||
HandleDebugHttpCommand);
|
||||
}
|
||||
|
||||
|
|
|
@ -151,6 +151,39 @@ namespace OpenSim.Framework
|
|||
}
|
||||
}
|
||||
|
||||
public static void LogOutgoingDetail(Stream outputStream)
|
||||
{
|
||||
using (StreamReader reader = new StreamReader(Util.Copy(outputStream), Encoding.UTF8))
|
||||
{
|
||||
string output;
|
||||
|
||||
if (DebugLevel == 5)
|
||||
{
|
||||
const int sampleLength = 80;
|
||||
char[] sampleChars = new char[sampleLength];
|
||||
reader.Read(sampleChars, 0, sampleLength);
|
||||
output = new string(sampleChars);
|
||||
}
|
||||
else
|
||||
{
|
||||
output = reader.ReadToEnd();
|
||||
}
|
||||
|
||||
LogOutgoingDetail(output);
|
||||
}
|
||||
}
|
||||
|
||||
public static void LogOutgoingDetail(string output)
|
||||
{
|
||||
if (DebugLevel == 5)
|
||||
{
|
||||
output = output.Substring(0, 80);
|
||||
output = output + "...";
|
||||
}
|
||||
|
||||
m_log.DebugFormat("[WEB UTIL]: {0}", output.Replace("\n", @"\n"));
|
||||
}
|
||||
|
||||
private static OSDMap ServiceOSDRequestWorker(string url, OSDMap data, string method, int timeout, bool compressed)
|
||||
{
|
||||
int reqnum = RequestNumber++;
|
||||
|
@ -178,7 +211,11 @@ namespace OpenSim.Framework
|
|||
// If there is some input, write it into the request
|
||||
if (data != null)
|
||||
{
|
||||
strBuffer = OSDParser.SerializeJsonString(data);
|
||||
strBuffer = OSDParser.SerializeJsonString(data);
|
||||
|
||||
if (DebugLevel >= 5)
|
||||
LogOutgoingDetail(strBuffer);
|
||||
|
||||
byte[] buffer = System.Text.Encoding.UTF8.GetBytes(strBuffer);
|
||||
|
||||
if (compressed)
|
||||
|
@ -357,6 +394,10 @@ namespace OpenSim.Framework
|
|||
if (data != null)
|
||||
{
|
||||
queryString = BuildQueryString(data);
|
||||
|
||||
if (DebugLevel >= 5)
|
||||
LogOutgoingDetail(queryString);
|
||||
|
||||
byte[] buffer = System.Text.Encoding.UTF8.GetBytes(queryString);
|
||||
|
||||
request.ContentLength = buffer.Length;
|
||||
|
@ -767,6 +808,9 @@ namespace OpenSim.Framework
|
|||
int length = (int)buffer.Length;
|
||||
request.ContentLength = length;
|
||||
|
||||
if (WebUtil.DebugLevel >= 5)
|
||||
WebUtil.LogOutgoingDetail(buffer);
|
||||
|
||||
request.BeginGetRequestStream(delegate(IAsyncResult res)
|
||||
{
|
||||
Stream requestStream = request.EndGetRequestStream(res);
|
||||
|
@ -954,6 +998,9 @@ namespace OpenSim.Framework
|
|||
length = (int)obj.Length;
|
||||
request.ContentLength = length;
|
||||
|
||||
if (WebUtil.DebugLevel >= 5)
|
||||
WebUtil.LogOutgoingDetail(buffer);
|
||||
|
||||
Stream requestStream = null;
|
||||
try
|
||||
{
|
||||
|
@ -1096,6 +1143,9 @@ namespace OpenSim.Framework
|
|||
int length = (int)buffer.Length;
|
||||
request.ContentLength = length;
|
||||
|
||||
if (WebUtil.DebugLevel >= 5)
|
||||
WebUtil.LogOutgoingDetail(buffer);
|
||||
|
||||
Stream requestStream = null;
|
||||
try
|
||||
{
|
||||
|
@ -1198,4 +1248,4 @@ namespace OpenSim.Framework
|
|||
return deserial;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue