3 instantiations of OtlpLogEntry
Aspire.Dashboard (1)
Otlp\Storage\TelemetryRepository.cs (1)
358var logEntry = new OtlpLogEntry(record, resourceView, scope, _otlpContext);
Aspire.Dashboard.Components.Tests (1)
Controls\StructuredLogDetailsTests.cs (1)
35LogEntry = new OtlpLogEntry(
Aspire.Dashboard.Tests (1)
Model\SpanWaterfallViewModelTests.cs (1)
60var log = new OtlpLogEntry(TelemetryTestHelpers.CreateLogRecord(traceId: trace.TraceId, spanId: "1"), app1View, scope, context);
159 references to OtlpLogEntry
Aspire.Dashboard (143)
Api\TelemetryApiService.cs (4)
234Field = nameof(OtlpLogEntry.Severity), 242var allLogs = new List<OtlpLogEntry>(); 363Field = nameof(OtlpLogEntry.Severity), 371await foreach (var log in telemetryRepository.WatchLogsAsync(null, filters, cancellationToken).ConfigureAwait(false))
Components\Controls\PropertyValues\LogLevelValue.razor.cs (1)
18public required OtlpLogEntry LogEntry { get; set; }
Components\Controls\StructuredLogActions.razor.cs (1)
26public required OtlpLogEntry LogEntry { get; set; }
Components\Pages\StructuredLogs.razor.cs (10)
50private FluentDataGrid<OtlpLogEntry>? _dataGrid; 132private async ValueTask<GridItemsProviderResult<OtlpLogEntry>> GetData(GridItemsProviderRequest<OtlpLogEntry> request) 263var logEntryId = TelemetryRepository.GetLog(LogEntryId.Value); 310private async Task OnShowPropertiesAsync(OtlpLogEntry entry, string? buttonId) 419private string GetRowClass(OtlpLogEntry entry) 446if (_dataGrid != null && FluentDataGridHelper<OtlpLogEntry>.TrySetMaxItemCount(_dataGrid, 10_000)) 543private bool IsGenAILogEntry(OtlpLogEntry logEntry) 559private async Task LaunchGenAIVisualizerAsync(OtlpLogEntry logEntry) 607foreach (var l in logs.Items.DistinctBy(l => (l.SpanId, l.TraceId)))
Components\Pages\TraceDetail.razor.cs (1)
513private async Task ToggleSpanLogsAsync(OtlpLogEntry logEntry)
Components\ResourcesGridColumns\LogMessageColumnDisplay.razor.cs (4)
12public required OtlpLogEntry LogEntry { get; set; } 18public required EventCallback<OtlpLogEntry> LaunchGenAIVisualizerCallback { get; set; } 21public required Func<OtlpLogEntry, bool> IsGenAILogCallback { get; set; } 27_exceptionText = OtlpLogEntry.GetExceptionText(LogEntry);
Components_Pages_StructuredLogs_razor.g.cs (36)
1131OtlpLogEntry 1137__builder4.AddComponentParameter(117, nameof(global::Microsoft.FluentUI.AspNetCore.Components.FluentDataGrid<OtlpLogEntry>. 1154__builder4.AddComponentParameter(118, nameof(global::Microsoft.FluentUI.AspNetCore.Components.FluentDataGrid<OtlpLogEntry>. 1171__builder4.AddComponentParameter(119, nameof(global::Microsoft.FluentUI.AspNetCore.Components.FluentDataGrid<OtlpLogEntry>. 1188__builder4.AddComponentParameter(120, nameof(global::Microsoft.FluentUI.AspNetCore.Components.FluentDataGrid<OtlpLogEntry>. 1205__builder4.AddComponentParameter(121, nameof(global::Microsoft.FluentUI.AspNetCore.Components.FluentDataGrid<OtlpLogEntry>. 1222__builder4.AddComponentParameter(122, nameof(global::Microsoft.FluentUI.AspNetCore.Components.FluentDataGrid<OtlpLogEntry>. 1230), (global::System.Func<OtlpLogEntry, global::System.String>)( 1239__builder4.AddComponentParameter(123, nameof(global::Microsoft.FluentUI.AspNetCore.Components.FluentDataGrid<OtlpLogEntry>. 1256__builder4.AddComponentParameter(124, nameof(global::Microsoft.FluentUI.AspNetCore.Components.FluentDataGrid<OtlpLogEntry>. 1273__builder4.AddComponentParameter(125, nameof(global::Microsoft.FluentUI.AspNetCore.Components.FluentDataGrid<OtlpLogEntry>. 1290__builder4.AddComponentParameter(126, nameof(global::Microsoft.FluentUI.AspNetCore.Components.FluentDataGrid<OtlpLogEntry>. 1307__builder4.AddComponentParameter(127, nameof(global::Microsoft.FluentUI.AspNetCore.Components.FluentDataGrid<OtlpLogEntry>. 1324__builder4.AddComponentParameter(128, nameof(global::Microsoft.FluentUI.AspNetCore.Components.FluentDataGrid<OtlpLogEntry>. 1332), (global::Microsoft.FluentUI.AspNetCore.Components.GridItemsProvider<OtlpLogEntry>)( 1341__builder4.AddComponentParameter(129, nameof(global::Microsoft.FluentUI.AspNetCore.Components.FluentDataGrid<OtlpLogEntry>. 1358__builder4.AddComponentParameter(130, nameof(global::Microsoft.FluentUI.AspNetCore.Components.FluentDataGrid<OtlpLogEntry>. 1375__builder4.AddComponentParameter(131, nameof(global::Microsoft.FluentUI.AspNetCore.Components.FluentDataGrid<OtlpLogEntry>. 1383), (global::System.Func<OtlpLogEntry, global::System.Object>)( 1392__builder4.AddComponentParameter(132, nameof(global::Microsoft.FluentUI.AspNetCore.Components.FluentDataGrid<OtlpLogEntry>. 1400), global::Microsoft.AspNetCore.Components.CompilerServices.RuntimeHelpers.TypeCheck<global::Microsoft.AspNetCore.Components.EventCallback<global::Microsoft.FluentUI.AspNetCore.Components.FluentDataGridRow<OtlpLogEntry>>>(global::Microsoft.AspNetCore.Components.EventCallback.Factory.Create<global::Microsoft.FluentUI.AspNetCore.Components.FluentDataGridRow<OtlpLogEntry>>(this, 1409__builder4.AddComponentParameter(133, nameof(global::Microsoft.FluentUI.AspNetCore.Components.FluentDataGrid<OtlpLogEntry>. 1419global::__Blazor.Aspire.Dashboard.Components.Pages.StructuredLogs.TypeInference.CreateAspireTemplateColumn_3(__builder5, 135, default(OtlpLogEntry)!, 136, 1483global::__Blazor.Aspire.Dashboard.Components.Pages.StructuredLogs.TypeInference.CreateAspireTemplateColumn_4(__builder5, 147, default(OtlpLogEntry)!, 148, 1517), global::Microsoft.AspNetCore.Components.CompilerServices.RuntimeHelpers.TypeCheck<global::Aspire.Dashboard.Otlp.Model.OtlpLogEntry>( 1530global::__Blazor.Aspire.Dashboard.Components.Pages.StructuredLogs.TypeInference.CreateAspireTemplateColumn_5(__builder5, 155, default(OtlpLogEntry)!, 156, 1582global::__Blazor.Aspire.Dashboard.Components.Pages.StructuredLogs.TypeInference.CreateAspireTemplateColumn_6(__builder5, 164, default(OtlpLogEntry)!, 165, 1633), global::Microsoft.AspNetCore.Components.CompilerServices.RuntimeHelpers.TypeCheck<global::Aspire.Dashboard.Otlp.Model.OtlpLogEntry>( 1650), (global::System.Func<global::Aspire.Dashboard.Otlp.Model.OtlpLogEntry, global::System.Boolean>)( 1667), global::Microsoft.AspNetCore.Components.CompilerServices.RuntimeHelpers.TypeCheck<global::Microsoft.AspNetCore.Components.EventCallback<global::Aspire.Dashboard.Otlp.Model.OtlpLogEntry>>(global::Microsoft.AspNetCore.Components.EventCallback.Factory.Create<global::Aspire.Dashboard.Otlp.Model.OtlpLogEntry>(this, 1680global::__Blazor.Aspire.Dashboard.Components.Pages.StructuredLogs.TypeInference.CreateAspireTemplateColumn_7(__builder5, 175, default(OtlpLogEntry)!, 176, 1774global::__Blazor.Aspire.Dashboard.Components.Pages.StructuredLogs.TypeInference.CreateAspireTemplateColumn_8(__builder5, 188, default(OtlpLogEntry)!, 189, 1838), global::Microsoft.AspNetCore.Components.CompilerServices.RuntimeHelpers.TypeCheck<global::Aspire.Dashboard.Otlp.Model.OtlpLogEntry>( 1900= (global::Microsoft.FluentUI.AspNetCore.Components.FluentDataGrid<OtlpLogEntry>)__value;
Components_ResourcesGridColumns_LogLevelColumnDisplay_razor.g.cs (1)
329public required OtlpLogEntry LogEntry { get; set; }
Model\Assistant\AssistantChatDataContext.cs (3)
28private readonly ConcurrentDictionary<long, OtlpLogEntry> _referencedLogs = new(); 349public void AddReferencedLogEntry(OtlpLogEntry logEntry) 354public bool TryGetLog(long internalId, [NotNullWhen(true)] out OtlpLogEntry? logEntry)
Model\Assistant\Markdown\AspireEnrichmentParser.cs (1)
183if (_options.DataContext.TryGetLog(result, out var logEntry))
Model\Assistant\Markdown\LogEntryInline.cs (1)
11public required OtlpLogEntry LogEntry { get; init; }
Model\Assistant\Prompts\IceBreakersBuilder.cs (5)
136public void StructuredLogs(BuildIceBreakersContext context, Func<PagedResult<OtlpLogEntry>> getCurrentLogs, bool hasErrors, Func<PagedResult<OtlpLogEntry>> getErrorLogs) 168public void StructuredLogs(BuildIceBreakersContext context, OtlpResource resource, Func<PagedResult<OtlpLogEntry>> getCurrentLogs, bool hasErrors, Func<PagedResult<OtlpLogEntry>> getErrorLogs) 200public void StructuredLogs(BuildIceBreakersContext context, OtlpLogEntry logEntry)
Model\Assistant\Prompts\KnownChatMessages.cs (4)
180public static ChatMessage CreateErrorStructuredLogsMessage(List<OtlpLogEntry> errorLogs, DashboardOptions options, Func<IOtlpResource, string> getResourceName) 199public static ChatMessage CreateAnalyzeLogEntryMessage(OtlpLogEntry logEntry, DashboardOptions options, Func<IOtlpResource, string> getResourceName) 287public static ChatMessage CreateAnalyzeTraceMessage(OtlpTrace trace, List<OtlpLogEntry> traceLogEntries, IEnumerable<IOutgoingPeerResolver> outgoingPeerResolvers, DashboardOptions options, Func<IOtlpResource, string> getResourceName) 314public static ChatMessage CreateAnalyzeSpanMessage(OtlpSpan span, List<OtlpLogEntry> traceLogEntries, IEnumerable<IOutgoingPeerResolver> outgoingPeerResolvers, DashboardOptions options, Func<IOtlpResource, string> getResourceName)
Model\Assistant\Prompts\PromptContextsBuilder.cs (5)
29public static Task ErrorStructuredLogs(InitializePromptContext promptContext, string displayText, Func<PagedResult<OtlpLogEntry>> getErrorLogs) 34foreach (var log in errorLogs.Items) 55public static Task AnalyzeLogEntry(InitializePromptContext promptContext, string displayText, OtlpLogEntry logEntry) 75foreach (var log in traceLogs) 95foreach (var log in traceLogs)
Model\ExportHelpers.cs (1)
37public static ExportResult GetLogEntryAsJson(OtlpLogEntry logEntry)
Model\GenAI\GenAIVisualizerDialogViewModel.cs (2)
563private static List<OtlpLogEntry> GetSpanLogEntries(TelemetryRepository telemetryRepository, OtlpSpan span) 589foreach (var logEntry in logEntries)
Model\Otlp\SpanLogEntryViewModel.cs (1)
13public required OtlpLogEntry LogEntry { get; init; }
Model\Otlp\SpanWaterfallViewModel.cs (3)
128public static List<SpanWaterfallViewModel> Create(OtlpTrace trace, List<OtlpLogEntry> logs, TraceDetailState state) 147static SpanWaterfallViewModel CreateViewModel(OtlpSpan span, int depth, bool hidden, TraceDetailState state, List<OtlpLogEntry>? spanLogs, ref int currentSpanLogIndex) 168foreach (var log in spanLogs)
Model\Otlp\TelemetryFilter.cs (8)
18public abstract IEnumerable<OtlpLogEntry> Apply(IEnumerable<OtlpLogEntry> input); 112public override IEnumerable<OtlpLogEntry> Apply(IEnumerable<OtlpLogEntry> input) 116case nameof(OtlpLogEntry.TimeStamp): 122case nameof(OtlpLogEntry.Severity): 131case nameof(OtlpLogEntry.Message): 139return input.Where(x => func(OtlpLogEntry.GetFieldValue(x, Field) ?? string.Empty, Value));
Model\SpanType.cs (6)
89public override IEnumerable<OtlpLogEntry> Apply(IEnumerable<OtlpLogEntry> input) 122public override IEnumerable<OtlpLogEntry> Apply(IEnumerable<OtlpLogEntry> input) 155public override IEnumerable<OtlpLogEntry> Apply(IEnumerable<OtlpLogEntry> input)
Model\StructuredLogMenuBuilder.cs (1)
63OtlpLogEntry logEntry,
Model\StructuredLogsViewModel.cs (7)
19private PagedResult<OtlpLogEntry>? _logs; 109public PagedResult<OtlpLogEntry> GetLogs() 135filters.Add(new FieldTelemetryFilter { Field = nameof(OtlpLogEntry.Message), Condition = FilterCondition.Contains, Value = FilterText }); 140filters.Add(new FieldTelemetryFilter { Field = nameof(OtlpLogEntry.Severity), Condition = FilterCondition.GreaterThanOrEqual, Value = _logLevel.Value.ToString() }); 149public PagedResult<OtlpLogEntry> GetErrorLogs(int count) 152filters.RemoveAll(f => f is FieldTelemetryFilter fieldFilter && fieldFilter.Field == nameof(OtlpLogEntry.Severity)); 153filters.Add(new FieldTelemetryFilter { Field = nameof(OtlpLogEntry.Severity), Condition = FilterCondition.GreaterThanOrEqual, Value = Microsoft.Extensions.Logging.LogLevel.Error.ToString() });
Model\StructureLogsDetailsViewModel.cs (2)
11public required OtlpLogEntry LogEntry { get; init; } 13public static string GetEventName(OtlpLogEntry logEntry, IStringLocalizer<Dashboard.Resources.StructuredLogs> loc)
Model\TelemetryExportService.cs (8)
233internal static OtlpTelemetryDataJson ConvertLogsToOtlpJson(List<OtlpLogEntry> logs) 240var firstLog = resourceGroup.First(); 260private static OtlpLogRecordJson ConvertLogEntry(OtlpLogEntry log) 313internal static string ConvertSpanToJson(OtlpSpan span, IOutgoingPeerResolver[] outgoingPeerResolvers, List<OtlpLogEntry>? logs = null, bool indent = true) 338internal static string ConvertTraceToJson(OtlpTrace trace, IOutgoingPeerResolver[] outgoingPeerResolvers, List<OtlpLogEntry>? logs = null) 367internal static string ConvertLogEntryToJson(OtlpLogEntry logEntry) 450private static OtlpResourceLogsJson[]? ConvertLogsToResourceLogs(List<OtlpLogEntry>? logs) 462var firstLog = resourceGroup.First();
Otlp\Model\OtlpHelpers.cs (1)
492public static string? GetEventName(OtlpLogEntry logEntry)
Otlp\Model\OtlpLogEntry.cs (3)
126public static string? GetFieldValue(OtlpLogEntry log, string field) 146public static string? GetExceptionText(OtlpLogEntry logEntry) 167static string? GetProperty(OtlpLogEntry logEntry, string propertyName)
Otlp\Storage\TelemetryRepository.cs (12)
50private readonly CircularBuffer<OtlpLogEntry> _logs; 340List<OtlpLogEntry>? addedLogs = null; 358var logEntry = new OtlpLogEntry(record, resourceView, scope, _otlpContext); 396addedLogs ??= new List<OtlpLogEntry>(); 421public PagedResult<OtlpLogEntry> GetLogs(GetLogsContext context) 430return PagedResult<OtlpLogEntry>.Empty; 457public OtlpLogEntry? GetLog(long logId) 463foreach (var logEntry in _logs) 485public List<OtlpLogEntry> GetLogsForSpan(string traceId, string spanId) 516public List<OtlpLogEntry> GetLogsForTrace(string traceId) 940foreach (var log in _logs) 942var value = OtlpLogEntry.GetFieldValue(log, attributeName);
Otlp\Storage\TelemetryRepository.Watchers.cs (11)
130public async IAsyncEnumerable<OtlpLogEntry> WatchLogsAsync( 136var channel = Channel.CreateBounded<OtlpLogEntry>(new BoundedChannelOptions(1000) 167foreach (var log in existingLogs.Items) 178while (channel.Reader.TryRead(out var pendingLog)) 189await foreach (var log in channel.Reader.ReadAllAsync(cancellationToken).ConfigureAwait(false)) 244private void PushLogsToWatchers(List<OtlpLogEntry> logs, ResourceKey resourceKey) 262foreach (var log in logs) 287private static bool MatchesFilters(OtlpLogEntry log, List<TelemetryFilter> filters) 291IEnumerable<OtlpLogEntry> result = [log]; 341private sealed class LogWatcher(ResourceKey? resourceKey, List<TelemetryFilter> filters, Channel<OtlpLogEntry> channel) 345public Channel<OtlpLogEntry> Channel => channel;
Aspire.Dashboard.Tests (16)
Integration\OtlpHttpJsonTests.cs (2)
501var log = logs.Items.First(); 578var log = logs.Items.First();
Model\SpanWaterfallViewModelTests.cs (1)
60var log = new OtlpLogEntry(TelemetryTestHelpers.CreateLogRecord(traceId: trace.TraceId, spanId: "1"), app1View, scope, context);
Model\TelemetryExportServiceTests.cs (1)
1079var logEntry = repository.GetLogs(GetLogsContext.ForResourceKey(repository.GetResources()[0].ResourceKey)).Items[0];
TelemetryRepositoryTests\LogTests.cs (3)
813Filters = [new FieldTelemetryFilter { Condition = FilterCondition.Contains, Field = nameof(OtlpLogEntry.Message), Value = "does_not_contain" }] 821Filters = [new FieldTelemetryFilter { Condition = FilterCondition.Contains, Field = nameof(OtlpLogEntry.Message), Value = "message" }] 1260var log = Assert.Single(logs.Items);
TelemetryRepositoryTests\TelemetryRepositoryTests.cs (9)
506var receivedLogs = new List<OtlpLogEntry>(); 512await foreach (var log in repository.WatchLogsAsync(resourceKey: null, filters: null, cts.Token)) 573await foreach (var log in repository.WatchLogsAsync(resourceKey: null, filters: null, cts.Token)) 669Field = nameof(OtlpLogEntry.Message), 696var receivedLogs = new List<OtlpLogEntry>(); 702await foreach (var log in repository.WatchLogsAsync(resourceKey: null, filters: filters, cts.Token)) 760Field = nameof(OtlpLogEntry.Severity), 787var receivedLogs = new List<OtlpLogEntry>(); 793await foreach (var log in repository.WatchLogsAsync(resourceKey: null, filters: filters, cts.Token))