Пример #1
0
        /// <summary>
        /// Loads entries.
        /// </summary>
        private void LoadEntries()
        {
            lock (this)
            {
                //	Update the include and exclude regular expressions.
                UpdateIncludeExcludeRegex();

                //	Obtain the set of new entries we don't already have.
                BufferingTraceListenerEntry[] bufferingTraceListenerEntryArray = bufferingTraceListener.GetEntries(ref lastEventIndex);
                if (bufferingTraceListenerEntryArray == null || bufferingTraceListenerEntryArray.Length == 0)
                {
                    return;
                }

                //	A long operation to follow, so prevent updates.
                listViewLog.SuspendLayout();
                listViewLog.BeginUpdate();

                //	Add the new entries.
                foreach (BufferingTraceListenerEntry bufferingTraceListenerEntry in bufferingTraceListenerEntryArray)
                {
                    //	Check the include regex, if there is one.  Exclude the entry as needed.
                    if (includeRegex != null)
                    {
                        if (!includeRegex.IsMatch(bufferingTraceListenerEntry.Category + " " + bufferingTraceListenerEntry.Text))
                        {
                            continue;
                        }
                    }

                    //	Check the exclude regex, if there is one.  Exclude the entry as needed.
                    if (excludeRegex != null)
                    {
                        if (excludeRegex.IsMatch(bufferingTraceListenerEntry.Category + " " + bufferingTraceListenerEntry.Text))
                        {
                            continue;
                        }
                    }

                    //	Sequence number.
                    ListViewItem.ListViewSubItem listViewSubItemSequenceNumber = new ListViewItem.ListViewSubItem();
                    listViewSubItemSequenceNumber.Text = bufferingTraceListenerEntry.SequenceNumberString;
                    listViewSubItemSequenceNumber.Font = itemFont;

                    //	Time.
                    ListViewItem.ListViewSubItem listViewSubItemTime = new ListViewItem.ListViewSubItem();
                    listViewSubItemTime.Text = bufferingTraceListenerEntry.DateTimeString;
                    listViewSubItemTime.Font = itemFont;

                    //	Category.
                    ListViewItem.ListViewSubItem listViewSubItemCategory = new ListViewItem.ListViewSubItem();
                    listViewSubItemCategory.Text = bufferingTraceListenerEntry.Category;
                    listViewSubItemCategory.Font = itemFont;

                    //	Determine the text to display and the color.
                    string text;
                    Color  color;
                    if (bufferingTraceListenerEntry.Category == ErrText.FailText)
                    {
                        color = Color.Red;
                        text  = String.Format(CultureInfo.InvariantCulture, "{0} {1}", bufferingTraceListenerEntry.Text, StackTraceText);
                    }
                    else
                    {
                        color = SystemColors.WindowText;
                        text  = bufferingTraceListenerEntry.Text;
                    }

                    //	Make multi-line text pretty.
                    text.Replace('\r', ' ');
                    text.Replace('\n', ' ');

                    //	Text.
                    ListViewItem.ListViewSubItem listViewSubItemText = new ListViewItem.ListViewSubItem();
                    listViewSubItemText.Text = text;
                    listViewSubItemText.Font = itemFont;

                    ListViewItem.ListViewSubItem[] listViewSubItemArray = new ListViewItem.ListViewSubItem[] { listViewSubItemSequenceNumber,
                                                                                                               listViewSubItemTime,
                                                                                                               listViewSubItemCategory,
                                                                                                               listViewSubItemText };
                    //	Add the item.
                    ListViewItem listViewItem = new ListViewItem(listViewSubItemArray, -1);
                    listViewItem.Tag       = bufferingTraceListenerEntry;
                    listViewItem.ForeColor = color;
                    listViewLog.Items.Add(listViewItem);
                }

                //	Scroll to the bottom.
                if (listViewLog.Items.Count > 0)
                {
                    listViewLog.EnsureVisible(listViewLog.Items.Count - 1);
                }

                //	Re-enable updates.
                listViewLog.EndUpdate();
                listViewLog.ResumeLayout();
            }
        }
        public BufferingTraceListenerEntry[] GetLogBuffer()
        {
            int count = 0;

            return(bufferingTraceListener.GetEntries(ref count));
        }