2007-11-07 Igor Zelmanovich <igorz@mainsoft.com>
authorIgor Zelmanovich <igorz@mono-cvs.ximian.com>
Wed, 7 Nov 2007 13:55:05 +0000 (13:55 -0000)
committerIgor Zelmanovich <igorz@mono-cvs.ximian.com>
Wed, 7 Nov 2007 13:55:05 +0000 (13:55 -0000)
* TraceContext.cs:
* TraceData.cs: implemented TraceMode feature.

2007-11-07 Igor Zelmanovich <igorz@mainsoft.com>

* PageParser.cs: fixed initial value of tracemode.

svn path=/trunk/mcs/; revision=89102

mcs/class/System.Web/System.Web.UI/ChangeLog
mcs/class/System.Web/System.Web.UI/PageParser.cs
mcs/class/System.Web/System.Web/ChangeLog
mcs/class/System.Web/System.Web/TraceContext.cs
mcs/class/System.Web/System.Web/TraceData.cs

index a1f15fbd6f1d2490b9e8c52c00a26b689c6d33e7..c3d8985fc5485462245fb4c62eec5de95faff765 100644 (file)
@@ -1,3 +1,7 @@
+2007-11-07 Igor Zelmanovich <igorz@mainsoft.com>
+
+       * PageParser.cs: fixed initial value of tracemode.
+
 2007-11-07 Igor Zelmanovich <igorz@mainsoft.com>
 
        * Control.cs: removes '#define MONO_TRACE'.
index fb629ecbe0a5451ecea658e1aa53b9fd5fb14d93..2a675644503ad88bef02339201fbba9a3c96a33a 100644 (file)
@@ -49,7 +49,7 @@ namespace System.Web.UI
                bool haveTrace;
                bool trace;
                bool notBuffer;
-               TraceMode tracemode;
+               TraceMode tracemode = TraceMode.Default;
                string responseEncoding;
                string contentType;
                int codepage = -1;
index 056ea3a783a89e8e4683bd63017fcb951fb6f40a..71f9dbf836853ecc27368c48d7e3416bd7eb6a12 100644 (file)
@@ -1,3 +1,8 @@
+2007-11-07 Igor Zelmanovich <igorz@mainsoft.com>
+
+       * TraceContext.cs:
+       * TraceData.cs: implemented TraceMode feature.  
+
 2007-11-07 Igor Zelmanovich <igorz@mainsoft.com>
 
        * BaseParamsCollection.cs:
index 4725fb7b2447e516e2c36ca164f7c79085b22bb1..02db0ed0819717c65fd421f3da0a58b3a5d59384 100644 (file)
@@ -40,7 +40,7 @@ namespace System.Web {
                HttpContext _Context;
                TraceManager _traceManager;
                bool _Enabled;
-               TraceMode _Mode;
+               TraceMode _Mode = TraceMode.Default;
                TraceData data;
                bool data_saved;
                bool _haveTrace;
@@ -50,7 +50,6 @@ namespace System.Web {
                public TraceContext (HttpContext Context)
                {
                        _Context = Context;
-                       _Mode = TraceMode.SortByTime;
                }
 
                internal bool HaveTrace {
@@ -87,7 +86,7 @@ namespace System.Web {
 
                public TraceMode TraceMode {
                        get {
-                               return _Mode;
+                               return (_Mode == TraceMode.Default) ? TraceManager.TraceMode : _Mode;
                        }
                        set {
                                _Mode = value;
@@ -139,6 +138,9 @@ namespace System.Web {
                {
                        if (data == null)
                                data = new TraceData ();
+
+                       data.TraceMode = _Context.Trace.TraceMode;
+
                        SetRequestDetails ();
                        if (_Context.Handler is Page)
                                data.AddControlTree ((Page) _Context.Handler, view_states, sizes);
index e2e0e2af1b4e094802f3aa08ca9a375a57a87105..baa4dc76c39e945c1e09dc8c448e91a60c884d95 100644 (file)
@@ -48,14 +48,16 @@ namespace System.Web {
                public string Message;
                public string Exception;
                public double TimeSinceFirst;
+               public double TimeSinceLast;
                public bool IsWarning;
 
-               public InfoTraceData (string category, string message, string exception, double timeSinceFirst, bool isWarning)
+               public InfoTraceData (string category, string message, string exception, double timeSinceFirst, double timeSinceLast, bool isWarning)
                {
                        this.Category = category;
                        this.Message = message;
                        this.Exception = exception;
                        this.TimeSinceFirst = timeSinceFirst;
+                       this.TimeSinceLast = timeSinceLast;
                        this.IsWarning = isWarning;
                }
        }
@@ -119,6 +121,7 @@ namespace System.Web {
                private string request_type;
                private int status_code;
                private Page page;
+               TraceMode _traceMode = HttpRuntime.TraceManager.TraceMode;
 
                public TraceData ()
                {
@@ -145,6 +148,11 @@ namespace System.Web {
                        is_first_time = true;
                }
 
+               public TraceMode TraceMode {
+                       get { return _traceMode; }
+                       set { _traceMode = value; }
+               }
+
                public string RequestPath {
                        get { return request_path; }
                        set { request_path = value; }
@@ -183,18 +191,26 @@ namespace System.Web {
                public void Write (string category, string msg, Exception error, bool Warning)
                {
                        double time;
+                       double time_from_last;
                        if (is_first_time) {
                                time = 0;
+                               time_from_last = 0; 
+                               prev_time = 0;
                                is_first_time = false;
                                first_time = DateTime.Now;
-                       } else
+                       }
+                       else {
                                time = (DateTime.Now - first_time).TotalSeconds;
+                               time_from_last = time - prev_time;
+                               prev_time = time;
+                       }
 
                        info.Enqueue (
                                new InfoTraceData (category,
                                                   HtmlEncode (msg),
                                                   (error != null ? error.ToString () : null),
                                                   time,
+                                                  time_from_last,
                                                   Warning));
                }
 
@@ -313,7 +329,15 @@ namespace System.Web {
                        
                        int pos = 0;
 #if NET_2_0
-                       foreach (InfoTraceData i in info)
+                       IEnumerable<InfoTraceData> enumerable = info;
+
+                       if (TraceMode == TraceMode.SortByCategory) {
+                               List<InfoTraceData> list = new List<InfoTraceData> (info);
+                               list.Sort (delegate (InfoTraceData x, InfoTraceData y) { return String.Compare (x.Category, y.Category); });
+                               enumerable = list;
+                       }
+
+                       foreach (InfoTraceData i in enumerable)
                                RenderTraceInfoRow (table, i, pos++);
 #else
                        foreach (object o in info)
@@ -458,16 +482,13 @@ namespace System.Web {
                                open = "<font color=\"Red\">";
                                close = "</font>";
                        }
-                       
-                       double t = (double) i.TimeSinceFirst;
+
                        string t1, t2;
-                       if (t == 0) {
+                       if (i.TimeSinceFirst == 0) {
                                t1 = t2 = String.Empty;
-                               prev_time = 0;
                        } else {
-                               t1 = t.ToString ("0.000000");
-                               t2 = (t - prev_time).ToString ("0.000000");
-                               prev_time = t;
+                               t1 = i.TimeSinceFirst.ToString ("0.000000");
+                               t2 = i.TimeSinceLast.ToString ("0.000000");
                        }
                        
                        RenderAltRow (table, pos, open + (string) i.Category + close,