2 instantiations of OtlpLogEntry
Aspire.Dashboard (2)
Otlp\Model\OtlpLogEntryData.cs (1)
71internal OtlpLogEntry CreateLogEntry(long internalId) => new(
Otlp\Storage\SqliteTelemetryRepository.Logs.cs (1)
701results.Add(new OtlpLogEntry(
110 references to OtlpLogEntry
Aspire.Dashboard (64)
Api\TelemetryApiService.cs (4)
198Field = nameof(OtlpLogEntry.Severity), 309Field = nameof(OtlpLogEntry.Severity), 327await foreach (var log in telemetryRepository.WatchLogsAsync(watchRequest, cancellationToken).ConfigureAwait(false)) 460/// <see cref="OtlpLogEntry.GetFieldValue"/>. Returns null for unrecognized keys.
Components\Controls\PropertyValues\LogLevelValue.razor.cs (1)
18public required OtlpLogEntry LogEntry { get; set; }
Components\Pages\StructuredLogs.razor.cs (4)
245var logEntryId = TelemetryRepository.GetLog(LogEntryId.Value); 291private async Task OnShowPropertiesAsync(OtlpLogEntry entry, string? focusElementId) 312var entry = TelemetryRepository.GetLog(summary.InternalId); 591var entry = SelectedLogEntry.LogEntry;
Model\ExportHelpers.cs (1)
37public static ExportResult GetLogEntryAsJson(OtlpLogEntry logEntry)
Model\GenAI\GenAIVisualizerDialogViewModel.cs (2)
597private static async Task<List<OtlpLogEntry>> GetSpanLogEntriesAsync(ITelemetryRepository telemetryRepository, OtlpSpan span, CancellationToken cancellationToken) 623foreach (var logEntry in logEntries)
Model\Otlp\TelemetryFilter.cs (1)
59/// milliseconds stored in the field value from <see cref="OtlpSpan.GetFieldValue"/> / <see cref="OtlpLogEntry.GetFieldValue"/>.
Model\StructuredLogMenuBuilder.cs (3)
54OtlpLogEntry logEntry, 81Func<OtlpLogEntry?> getLogEntry, 118var logEntry = getLogEntry();
Model\StructuredLogsViewModel.cs (2)
112filters.Add(new FieldTelemetryFilter { Field = nameof(OtlpLogEntry.Message), Condition = FilterCondition.Contains, Value = filterText }); 117filters.Add(new FieldTelemetryFilter { Field = nameof(OtlpLogEntry.Severity), Condition = FilterCondition.GreaterThanOrEqual, Value = logLevel.Value.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)
226internal static OtlpTelemetryDataJson ConvertLogsToOtlpJson(List<OtlpLogEntry> logs) 233var firstLog = resourceGroup.First(); 253private static OtlpLogRecordJson ConvertLogEntry(OtlpLogEntry log) 306internal static string ConvertSpanToJson(OtlpSpan span, List<OtlpLogEntry>? logs = null, bool indent = true) 333internal static string ConvertTraceToJson(OtlpTrace trace, List<OtlpLogEntry>? logs = null) 362internal static string ConvertLogEntryToJson(OtlpLogEntry logEntry) 443private static OtlpResourceLogsJson[]? ConvertLogsToResourceLogs(List<OtlpLogEntry>? logs) 455var firstLog = resourceGroup.First();
Otlp\Model\OtlpHelpers.cs (1)
548public static string? GetEventName(OtlpLogEntry logEntry)
Otlp\Model\OtlpLogEntry.cs (3)
62public static string? GetFieldValue(OtlpLogEntry log, string field) 83public static string? GetExceptionText(OtlpLogEntry logEntry) 104static string? GetProperty(OtlpLogEntry logEntry, string propertyName)
Otlp\Model\OtlpLogEntryData.cs (1)
71internal OtlpLogEntry CreateLogEntry(long internalId) => new(
Otlp\Storage\ITelemetryRepository.cs (5)
37Task<PagedResult<OtlpLogEntry>> GetLogsAsync(GetLogsContext context, CancellationToken cancellationToken); 39OtlpLogEntry? GetLog(long logId); 40Task<List<OtlpLogEntry>> GetLogsForSpanAsync(string traceId, string spanId, CancellationToken cancellationToken); 41Task<List<OtlpLogEntry>> GetLogsForTraceAsync(string traceId, CancellationToken cancellationToken); 68IAsyncEnumerable<OtlpLogEntry> WatchLogsAsync(WatchLogsRequest request, CancellationToken cancellationToken);
Otlp\Storage\SqliteTelemetryRepository.cs (4)
175public Task<PagedResult<OtlpLogEntry>> GetLogsAsync(GetLogsContext context, CancellationToken cancellationToken) => 179public OtlpLogEntry? GetLog(long logId) => GetLogFromDatabase(logId); 180public async Task<List<OtlpLogEntry>> GetLogsForSpanAsync(string traceId, string spanId, CancellationToken cancellationToken) 195public async Task<List<OtlpLogEntry>> GetLogsForTraceAsync(string traceId, CancellationToken cancellationToken)
Otlp\Storage\SqliteTelemetryRepository.Logs.cs (11)
24private async Task<List<OtlpLogEntry>> AddLogsToDatabaseAsync(AddContext context, RepeatedField<ResourceLogs> resourceLogs) 26var addedLogs = new List<OtlpLogEntry>(); 108List<OtlpLogEntry> addedLogs) 196private PagedResult<OtlpLogEntry> GetLogsFromDatabase(GetLogsContext context, CancellationToken cancellationToken) 268return new PagedResult<OtlpLogEntry> 405private OtlpLogEntry? GetLogFromDatabase(long logId) 580if (filter.Field == nameof(OtlpLogEntry.Severity)) 590if (filter.Field == nameof(OtlpLogEntry.TimeStamp)) 620nameof(OtlpLogEntry.Message) or KnownStructuredLogFields.MessageField => "l.message", 677private List<OtlpLogEntry> MaterializeLogs(SqliteConnection connection, List<PageLogRecord> records, SqliteTransaction transaction) 696var results = new List<OtlpLogEntry>(records.Count);
Otlp\Storage\SqliteTelemetryRepository.Runtime.cs (11)
175private void NotifyLogsAdded(List<OtlpLogEntry> logs) 179foreach (var log in logs) 274public async IAsyncEnumerable<OtlpLogEntry> WatchLogsAsync( 278var channel = Channel.CreateBounded<OtlpLogEntry>(new BoundedChannelOptions(1000) 301foreach (var log in existingLogs.Items) 306while (channel.Reader.TryRead(out var pendingLog)) 315await foreach (var log in channel.Reader.ReadAllAsync(cancellationToken).ConfigureAwait(false)) 371private void PushLogsToWatchers(List<OtlpLogEntry> logs) 396foreach (var log in logs) 429private sealed class LogWatcher(WatchLogsRequest request, Channel<OtlpLogEntry> channel) 432public Channel<OtlpLogEntry> Channel => channel;
Aspire.Dashboard.Components.Tests (7)
Controls\TextVisualizerDialogTests.cs (1)
504var logEntry = TelemetryTestHelpers.CreateOtlpLogEntry(
Shared\TestTelemetryRepository.cs (5)
33public Task<PagedResult<OtlpLogEntry>> GetLogsAsync(GetLogsContext context, CancellationToken cancellationToken) => inner.GetLogsAsync(context, cancellationToken); 36public OtlpLogEntry? GetLog(long logId) => inner.GetLog(logId); 37public Task<List<OtlpLogEntry>> GetLogsForSpanAsync(string traceId, string spanId, CancellationToken cancellationToken) => inner.GetLogsForSpanAsync(traceId, spanId, cancellationToken); 38public Task<List<OtlpLogEntry>> GetLogsForTraceAsync(string traceId, CancellationToken cancellationToken) => inner.GetLogsForTraceAsync(traceId, cancellationToken); 56public IAsyncEnumerable<OtlpLogEntry> WatchLogsAsync(WatchLogsRequest request, CancellationToken cancellationToken) => inner.WatchLogsAsync(request, cancellationToken);
tests\Shared\Telemetry\TelemetryTestHelpers.cs (1)
212public static OtlpLogEntry CreateOtlpLogEntry(LogRecord record, OtlpResourceView resourceView, OtlpScope scope, OtlpContext context)
Aspire.Dashboard.Tests (39)
Integration\OtlpHttpJsonTests.cs (2)
596var log = logs.Items.First(); 673var log = logs.Items.First();
Model\StructuredLogsPageViewModelTests.cs (4)
142Field = nameof(OtlpLogEntry.Message), 162Field = nameof(OtlpLogEntry.Message), 182Field = nameof(OtlpLogEntry.Message), 203Field = nameof(OtlpLogEntry.Message),
Model\TelemetryExportServiceTests.cs (1)
1247var logEntry = (await repositoryContext.Repository.GetLogsAsync(GetLogsContext.ForResourceKey(repositoryContext.Repository.GetResources()[0].ResourceKey), cancellationToken: CancellationToken.None)).Items[0];
Model\TraceDetailPageViewModelTests.cs (2)
109var logEntry = TelemetryTestHelpers.CreateOtlpLogEntry(TelemetryTestHelpers.CreateLogRecord(message: "test log"), resourceView, scope, context); 150var logEntry = TelemetryTestHelpers.CreateOtlpLogEntry(TelemetryTestHelpers.CreateLogRecord(message: "test log"), resourceView, scope, context);
TelemetryRepositoryTests\LogTests.cs (9)
193var log = logs.Items[0]; 331.Select(log => OtlpLogEntry.GetFieldValue(log, field)) 1067Filters = [new FieldTelemetryFilter { Condition = FilterCondition.Contains, Field = nameof(OtlpLogEntry.Message), Value = "does_not_contain" }] 1075Filters = [new FieldTelemetryFilter { Condition = FilterCondition.Contains, Field = nameof(OtlpLogEntry.Message), Value = "MESSAGE" }] 1112Filters = [new FieldTelemetryFilter { Condition = FilterCondition.Contains, Field = nameof(OtlpLogEntry.Message), Value = fragment }] 1115var log = Assert.Single(result.Items); 1554var log = Assert.Single(logs.Items); 1797Field = nameof(OtlpLogEntry.Message), 1804Field = nameof(OtlpLogEntry.Message),
TelemetryRepositoryTests\SqliteTelemetryPersistenceTests.cs (3)
126var log = Assert.Single((await repositoryContext.Repository.GetLogsAsync(CreateLogsContext(), cancellationToken: CancellationToken.None)).Items); 303var log = Assert.Single((await repositoryContext.Repository.GetLogsAsync(CreateLogsContext(), cancellationToken: CancellationToken.None)).Items); 309var log = Assert.Single((await historicalContext.Repository.GetLogsAsync(CreateLogsContext(), cancellationToken: CancellationToken.None)).Items);
TelemetryRepositoryTests\TelemetryRepositoryTests.cs (17)
506var receivedLogs = new List<OtlpLogEntry>(); 512await foreach (var log in repositoryContext.Repository.WatchLogsAsync(new WatchLogsRequest { ResourceKeys = [], Filters = [] }, cts.Token)) 573await foreach (var log in repositoryContext.Repository.WatchLogsAsync(new WatchLogsRequest { ResourceKeys = [], Filters = [] }, cts.Token)) 913var receivedLogs = new List<OtlpLogEntry>(); 918await foreach (var log in repositoryContext.Repository.WatchLogsAsync(new WatchLogsRequest { ResourceKeys = [new ResourceKey("service1", "inst1"), new ResourceKey("service2", "inst2")], Filters = [] }, cts.Token)) 945Field = nameof(OtlpLogEntry.Message), 972var receivedLogs = new List<OtlpLogEntry>(); 978await foreach (var log in repositoryContext.Repository.WatchLogsAsync(new WatchLogsRequest { ResourceKeys = [], Filters = filters }, cts.Token)) 1036Field = nameof(OtlpLogEntry.Severity), 1063var receivedLogs = new List<OtlpLogEntry>(); 1069await foreach (var log in repositoryContext.Repository.WatchLogsAsync(new WatchLogsRequest { ResourceKeys = [], Filters = filters }, cts.Token)) 1146var receivedLogs = new List<OtlpLogEntry>(); 1152await foreach (var log in repositoryContext.Repository.WatchLogsAsync(new WatchLogsRequest 1213Field = nameof(OtlpLogEntry.Message), 1220Field = nameof(OtlpLogEntry.Message), 1249var receivedLogs = new List<OtlpLogEntry>(); 1254await foreach (var log in repositoryContext.Repository.WatchLogsAsync(new WatchLogsRequest { ResourceKeys = [], Filters = filters }, cts.Token))
tests\Shared\Telemetry\TelemetryTestHelpers.cs (1)
212public static OtlpLogEntry CreateOtlpLogEntry(LogRecord record, OtlpResourceView resourceView, OtlpScope scope, OtlpContext context)