/// <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); } } }
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; }