2 instantiations of LogEntry
Aspire.Dashboard (2)
src\Shared\ConsoleLogs\LogEntry.cs (2)
77return new LogEntry 99return new LogEntry
84 references to LogEntry
Aspire.Dashboard (38)
Components\Controls\LogViewer.razor.cs (11)
23private static readonly IEqualityComparer<LogEntry> s_logEntryComparer = EqualityComparer<LogEntry>.Create( 36private IList<LogEntry>? _visibleEntriesCache; 76private Virtualize<LogEntry>? VirtualizeRef { get; set; } 137private ValueTask<ItemsProviderResult<LogEntry>> GetItems(ItemsProviderRequest r) 143return ValueTask.FromResult(new ItemsProviderResult<LogEntry>(initialResult.Items, initialResult.TotalItemCount)); 146return ValueTask.FromResult(new ItemsProviderResult<LogEntry>(entries.Skip(r.StartIndex).Take(r.Count), entries.Count)); 149private IList<LogEntry> GetVisibleEntries() 159return _visibleEntriesCache = Array.Empty<LogEntry>(); 171private bool MatchesFilter(LogEntry entry, string filterText) 181private string GetSearchableText(LogEntry entry)
Components\Pages\ConsoleLogs.razor.cs (5)
143private record struct LogEntryToWrite(string ResourceName, LogEntry LogEntry, int? LineNumber); 1040_logEntryChannel.Writer.TryWrite(new LogEntryToWrite(subscription.Resource.Name, LogEntry.CreatePause(GetResourceName(subscription.Resource), priorPause.Start, priorPause.End), LineNumber: null)); 1058var logEntry = logParser.CreateLogEntry(content, isErrorOutput, resourcePrefix); 1213_logEntryChannel.Writer.TryWrite(new LogEntryToWrite(subscription.Resource.Name, LogEntry.CreatePause(GetResourceName(subscription.Resource), timestamp), LineNumber: null)); 1222var lastResourceEntry = entries.LastOrDefault(e => e.ResourcePrefix == resourcePrefix);
Model\ConsoleLogsFetcher.cs (5)
32private async Task<List<LogEntry>> FetchLogEntriesAsync(string resourceName, DateTime? filterDate, CancellationToken cancellationToken) 34var logEntries = new List<LogEntry>(); 44var logEntry = logParser.CreateLogEntry(logLine.Content, logLine.IsErrorMessage, resourcePrefix: null); 62public async Task<Dictionary<string, List<LogEntry>>> FetchLogEntriesAsync(HashSet<string> resourceNames, CancellationToken cancellationToken) 70var result = new Dictionary<string, List<LogEntry>>(StringComparer.OrdinalIgnoreCase);
src\Shared\ConsoleLogs\LogEntries.cs (8)
19private readonly CircularBuffer<LogEntry> _logEntries = new(maximumEntryCount); 27public IList<LogEntry> GetEntries() => _logEntries; 45foreach (var pauseEntry in pauseEntries) 60public bool ProcessPauseFilters(LogEntry logEntry) 83public void InsertSorted(LogEntry logLine) 99var entry = _logEntries[i]; 114private void InsertSortedCore(LogEntry logEntry) 126var current = _logEntries[rowIndex];
src\Shared\ConsoleLogs\LogEntry.cs (4)
75public static LogEntry CreatePause(string resourcePrefix, DateTime startTimestamp, DateTime? endTimestamp = null) 92public static LogEntry Create(DateTime? timestamp, string logMessage, bool isErrorMessage) 97public static LogEntry Create(DateTime? timestamp, string logMessage, string rawLogContent, bool isErrorMessage, string? resourcePrefix) 123public static LogEntryKey Create(LogEntry logEntry)
src\Shared\ConsoleLogs\LogEntrySerializer.cs (2)
16public static void WriteLogEntriesToStream(IList<LogEntry> entries, Stream stream) 20foreach (var entry in entries)
src\Shared\ConsoleLogs\LogParser.cs (3)
20public LogEntry CreateLogEntry(string rawText, bool isErrorOutput, string? resourcePrefix) 70var logEntry = LogEntry.Create(timestamp, content, rawText, isErrorOutput, resourcePrefix);
Aspire.Dashboard.Components.Tests (26)
Controls\LogViewerTests.cs (19)
24var virtualize = cut.FindComponent<Virtualize<LogEntry>>().Instance; 28logEntries.InsertSorted(LogEntry.Create(timestamp: DateTime.UtcNow, logMessage: message, isErrorMessage: false)); 46var entry = LogEntry.Create(timestamp, logMessage: "Repeated message", isErrorMessage: false); 47var repeatedEntry = LogEntry.Create(timestamp, logMessage: "Repeated message", isErrorMessage: false); 51var rematerializedEntry = LogEntry.Create(timestamp, logMessage: "Repeated message", isErrorMessage: false); 55var virtualize = cut.FindComponent<Virtualize<LogEntry>>().Instance; 93logEntries.InsertSorted(LogEntry.Create( 227var pauseEntry = LogEntry.CreatePause("resource", pauseStart, pauseEnd); 231logEntries.InsertSorted(LogEntry.Create( 264logEntries.InsertSorted(LogEntry.Create( 358logEntries.InsertSorted(LogEntry.Create( 381logEntries.InsertSorted(LogEntry.Create( 413logEntries.InsertSorted(LogEntry.Create( 440logEntries.InsertSorted(LogEntry.Create( 476logEntries.InsertSorted(LogEntry.Create(
Pages\ConsoleLogsTests.cs (7)
633var earliestEntry = instance._logEntries.GetEntries()[0]; 739var earliestEntry = instance._logEntries.GetEntries()[0]; 781var logEntry = Assert.Single(cut.Instance._logEntries.GetEntries()); 1028var pauseLog = Assert.Single(cut.Instance._logEntries.GetEntries()); 1054var pauseEntry = Assert.Single(cut.Instance._logEntries.GetEntries()); 1077var newLog = Assert.Single(logViewer.Instance.LogEntries!.GetEntries(), e => e.RawContent == resumeContent); 1087foreach (var logEntry in logEntries.GetEntries())
Aspire.Dashboard.Tests (20)
ConsoleLogsTests\LogEntriesTests.cs (20)
21var logEntry = logParser.CreateLogEntry(content, isError, resourcePrefix: null); 35var logEntry1 = logParser.CreateLogEntry("Test", isErrorOutput: false, resourcePrefix: null); 39var logEntry2 = logParser.CreateLogEntry("2024-08-19T06:12:01.000Z Test", isErrorOutput: false, resourcePrefix: null); 46var logEntry3 = logParser.CreateLogEntry("2024-08-19T06:12:02.000Z Test", isErrorOutput: false, resourcePrefix: null); 63logEntries.InsertSorted(LogEntry.CreatePause( 69var pauseEntry = LogEntry.CreatePause("resource-name", new DateTime(2024, 1, 1, 0, 0, 0, DateTimeKind.Utc)); 79var entry = Assert.Single(logEntries.GetEntries()); 94var entry = Assert.Single(logEntries.GetEntries()); 243logEntries.InsertSorted(LogEntry.Create(timestamp.AddSeconds(1), "1", isErrorMessage: false)); 244logEntries.InsertSorted(LogEntry.Create(timestamp.AddSeconds(3), "3", isErrorMessage: false)); 245logEntries.InsertSorted(LogEntry.Create(timestamp.AddSeconds(2), "2", isErrorMessage: false)); 264logEntries.InsertSorted(LogEntry.Create(timestamp.AddSeconds(1), "1", isErrorMessage: false)); 265logEntries.InsertSorted(LogEntry.Create(timestamp.AddSeconds(2), "2", isErrorMessage: false)); 266logEntries.InsertSorted(LogEntry.Create(timestamp.AddSeconds(3), "3", isErrorMessage: false)); 284logEntries.InsertSorted(LogEntry.Create(timestamp.AddSeconds(1), "1", isErrorMessage: false)); 285logEntries.InsertSorted(LogEntry.Create(timestamp.AddSeconds(3), "3", isErrorMessage: false)); 286logEntries.InsertSorted(LogEntry.Create(timestamp.AddSeconds(2), "2", isErrorMessage: false)); 302var entry = parser.CreateLogEntry("\x1b[36mhttps://www.example.com\u001b[0m", isErrorOutput: false, resourcePrefix: null); 317var entry = parser.CreateLogEntry("\u001b[40m\u001b[32minfo\u001b[39m\u001b[22m\u001b[49m: LoggerName", isErrorOutput: false, resourcePrefix: null);