/// <summary>
        /// Called when any message is written to the log.
        /// </summary>
        /// <param name="log">The log.</param>
        /// <param name="message">The message.</param>
        /// <param name="logEvent">The log event.</param>
        /// <param name="extraData">The extra data.</param>
        /// <param name="logData">The log data.</param>
        /// <param name="time">The time.</param>
        protected override void Write(ILog log, string message, LogEvent logEvent, object extraData, LogData logData, DateTime time)
        {
            base.Write(log, message, logEvent, extraData, time);

            var logEntry = new LogEntry(log, message, logEvent, extraData, null, time);

            AddLogEvent(_lastLogEntries, logEntry, MaximumNumberOfLogEntries);

            switch (logEvent)
            {
                case LogEvent.Warning:
                    AddLogEvent(_lastWarningLogEntries, logEntry, MaximumNumberOfWarningLogEntries);
                    break;

                case LogEvent.Error:
                    AddLogEvent(_lastErrorLogEntries, logEntry, MaximumNumberOfErrorLogEntries);
                    break;
            }
        }
        private RichTextBoxParagraph CreateLogEntryParagraph(LogEntry logEntry)
        {
            var vm = ViewModel as LogViewerViewModel;
            if (vm == null)
            {
                return null;
            }

            var paragraph = new RichTextBoxParagraph(logEntry);
            paragraph.MouseLeftButtonDown += OnParagraphMouseLeftButton;

            if (EnableIcons)
            {
                var icon = new Label() { DataContext = logEntry };
                paragraph.Inlines.Add(icon);
            }

            if (EnableTextColoring)
            {
                paragraph.Foreground = ColorSets[logEntry.LogEvent];
            }

            paragraph.SetData(EnableTimestamp, EnableThreadId);

            return paragraph;
        }
        private void OnLogMessage(object sender, LogMessageEventArgs e)
        {
            if (_isClearingLog)
            {
                return;
            }

            var logEntry = new LogEntry(e);

            logEntry.Data["ThreadId"] = ThreadHelper.GetCurrentThreadId();

            lock (_lock)
            {
                _logEntries.Add(logEntry);

                if (!_isUpdatingTypes)
                {
                    var typeNames = TypeNames;
                    if (!typeNames.Contains(logEntry.Log.TargetType.Name))
                    {
                        _isUpdatingTypes = true;

                        try
                        {
                            typeNames.Add(logEntry.Log.TargetType.Name);
                        }
                        catch (System.Exception)
                        {
                            // we don't have time for this, let it go...
                        }

                        _isUpdatingTypes = false;
                    }
                }
            }

            UpdateEntriesCount(logEntry);

            LogMessage.SafeInvoke(this, new LogEntryEventArgs(logEntry));
        }
        private bool PassTypeFilter(LogEntry logEntry)
        {
            var typeFilter = TypeFilter;
            if (string.IsNullOrEmpty(typeFilter) || typeFilter.Equals(defaultComboBoxItem))
            {
                return true;
            }

            var isOrigin = logEntry.Log.TargetType.Name.IndexOf(typeFilter, StringComparison.OrdinalIgnoreCase) >= 0;
            if (isOrigin)
            {
                return true;
            }

            return false;
        }
        private bool PassLogFilter(LogEntry logEntry)
        {
            if (string.IsNullOrEmpty(LogFilter) || LogFilter.Equals(defaultComboBoxItem))
            {
                return true;
            }

            var contains = logEntry.Message.IndexOf(LogFilter, StringComparison.OrdinalIgnoreCase) >= 0;
            if (contains)
            {
                return true;
            }

            return false;
        }
 private bool PassFilters(LogEntry logEntry)
 {
     return PassTypeFilter(logEntry) && PassLogFilter(logEntry);
 }
        private void UpdateEntriesCount(LogEntry logEvent)
        {
            switch (logEvent.LogEvent)
            {
                case LogEvent.Debug:
                    DebugEntriesCount++;
                    break;

                case LogEvent.Info:
                    InfoEntriesCount++;
                    break;

                case LogEvent.Warning:
                    WarningEntriesCount++;
                    break;

                case LogEvent.Error:
                    ErrorEntriesCount++;
                    break;
            }
        }
        public bool IsValidLogEntry(LogEntry logEntry)
        {
            if (!PassFilters(logEntry))
            {
                return false;
            }

            if (!IsAcceptable(logEntry.LogEvent))
            {
                return false;
            }

            return true;
        }
 public RichTextBoxParagraph(LogEntry logEntry)
 {
     LogEntry = logEntry;
 }
        private void AddLogEvent(List<LogEntry> collection, LogEntry logEntry, int maximumEntries)
        {
            lock (_lock)
            {
                collection.Add(logEntry);

                while (collection.Count > maximumEntries)
                {
                    collection.RemoveAt(0);
                }
            }
        }
示例#11
0
        private void OnLogMessage(object sender, LogMessageEventArgs e)
        {
            var logEntry = new LogEntry(e);
            if (!logEntry.Data.ContainsKey("ThreadId"))
            {
                logEntry.Data["ThreadId"] = ThreadHelper.GetCurrentThreadId();
            }

            AddLogEntries(new[] { logEntry });
        }
 public LogEntryDoubleClickEventArgs(LogEntry logEntry)
 {
     LogEntry = logEntry;
 }