Example #1
0
            // WARNING: Make sure this it the only method in this class, since
            // the method is not accessed by name.  See below, call to
            // GetMethods.

            // This logs the actual events
            public void LoggerBase(Object[] objects)
            {
                if (_eventLog.InvokeRequired)
                {
                    _eventLog.Invoke(new LoggerBaseHandler(LoggerBase), new object[] { objects });
                }
                else
                {
                    LoggerListViewItem li =
                        new LoggerListViewItem(_objectEvent._eventInfo.Name);
                    // Skip two frames and get the source information if available
                    li._stackTrace = new StackTrace(2, true);
                    li._objects    = objects;
                    li.Tag         = _objectEvent;

                    lock (_eventLog)
                    {
                        if (TraceUtil.If(this, TraceLevel.Info))
                        {
                            Trace.Write(_objectEvent.ToString());
                        }
                        _eventLog.Items.Add(li);
                        _eventLog.EnsureVisible(_eventLog.Items.Count - 1);

                        // Get correct incarnation number
                        int incNo = TraceIncarnation();

                        // Build the event parameter string
                        StringBuilder dataStr = new StringBuilder();
                        for (int i = 0; i < objects.Length; i++)
                        {
                            if (TraceUtil.If(this, TraceLevel.Info))
                            {
                                Trace.Write(", " + objects[i]);
                            }
                            if (i > 0)
                            {
                                dataStr.Append(", ");
                            }
                            if (objects[i] != null)
                            {
                                // Using object.ToString seems to hang so use the type
                                // name instead.
                                //dataStr.Append(objects[i].ToString());
                                dataStr.Append(objects[i].GetType().FullName);
                            }
                        }
                        TraceUtil.WriteLineInfo(this, "");

                        li.SubItems.Add(dataStr.ToString());
                        li.SubItems.Add(incNo.ToString());
                        li.SubItems.Add(DateTime.Now.ToString("HH:mm:ss.ff"));
                    }
                }
            }
Example #2
0
        protected void GetDetailText()
        {
            DetailPanel.Clear();

            if (SelectedItems.Count == 0)
            {
                return;
            }
            LoggerListViewItem li = (LoggerListViewItem)SelectedItems[0];
            ObjectEvent        oe = (ObjectEvent)li.Tag;

            DetailPanel.AddLink("Event",
                                !ObjectBrowser.INTERNAL,
                                18,
                                ObjMemberLinkHelper.OMLHelper,
                                oe);

            // The event parameters
            // FIXME - add then in reverse order, the detail panel
            // seems to reverse them
            for (int i = li._objects.Length - 1; i >= 0; i--)
            {
                ParameterInfo p = oe._eventParams[i];

                Object obj = li._objects[i];
                if (obj != null)
                {
                    if (!obj.GetType().IsValueType&&
                        !(obj is String))
                    {
                        DetailPanel.AddLink(p.Name,
                                            !ObjectBrowser.INTERNAL,
                                            20,
                                            ObjLinkHelper.OLHelper,
                                            li._objects[i]);
                    }
                    else
                    {
                        DetailPanel.Add(p.Name,
                                        !ObjectBrowser.INTERNAL,
                                        20,
                                        li._objects[i].ToString());
                    }
                }
                else
                {
                    DetailPanel.Add(p.Name,
                                    !ObjectBrowser.INTERNAL,
                                    20,
                                    "");
                }
            }

            DetailPanel.Add("Incarnation",
                            !ObjectBrowser.INTERNAL,
                            40,
                            li.SubItems[INCARNATION].Text);

            DetailPanel.Add("Time",
                            !ObjectBrowser.INTERNAL,
                            50,
                            li.SubItems[TIME].Text);

            // Fixup the stack trace to display on detail panel
            StringBuilder stackTrace =
                new StringBuilder(li._stackTrace.ToString());

            // Get rid of first newline
            stackTrace.Remove(0, 2);
            // And last newline
            stackTrace.Remove(stackTrace.Length - 2, 2);
            // And the tab in the front of the lines
            stackTrace.Replace("\tat ", "");

            DetailPanel.Add("Stack Trace",
                            !ObjectBrowser.INTERNAL,
                            60,
                            stackTrace.ToString());
        }
Example #3
0
			// WARNING: Make sure this it the only method in this class, since
			// the method is not accessed by name.  See below, call to 
			// GetMethods.

			// This logs the actual events
			public void LoggerBase(Object[] objects)
			{
				if (_eventLog.InvokeRequired) {
					_eventLog.Invoke(new LoggerBaseHandler(LoggerBase), new object[] {objects});
				} else {
					LoggerListViewItem li = 
						new LoggerListViewItem(_objectEvent._eventInfo.Name);
					// Skip two frames and get the source information if available
					li._stackTrace = new StackTrace(2, true);
					li._objects = objects;
					li.Tag = _objectEvent;
	
					lock (_eventLog)
					{
						if (TraceUtil.If(this, TraceLevel.Info))
							Trace.Write(_objectEvent.ToString());
						_eventLog.Items.Add(li);
						_eventLog.EnsureVisible(_eventLog.Items.Count - 1);
	
						// Get correct incarnation number
						int incNo = TraceIncarnation();
	
						// Build the event parameter string
						StringBuilder dataStr = new StringBuilder();
						for (int i = 0; i < objects.Length; i++)
						{
							if (TraceUtil.If(this, TraceLevel.Info))
								Trace.Write(", " + objects[i]);
							if (i > 0)
								dataStr.Append(", ");
							if (objects[i] != null) {
								// Using object.ToString seems to hang so use the type
								// name instead.
								//dataStr.Append(objects[i].ToString());
								dataStr.Append(objects[i].GetType().FullName);
							}
						}
						TraceUtil.WriteLineInfo(this, "");
	
						li.SubItems.Add(dataStr.ToString());
						li.SubItems.Add(incNo.ToString());
						li.SubItems.Add(DateTime.Now.ToString("HH:mm:ss.ff"));
					}
				}
			}