[sdk-logs] Expose logging SDK implementation as public (#4568)
This commit is contained in:
parent
2e57e2daab
commit
d57e6f8688
|
|
@ -6,6 +6,10 @@
|
|||
for instructions to enable exemplars.
|
||||
([#4553](https://github.com/open-telemetry/opentelemetry-dotnet/pull/4553))
|
||||
|
||||
* Updated to display `Severity` and `SeverityText` text instead of
|
||||
`ILogger.LogLevel` when exporting `LogRecord` instances.
|
||||
([#4568](https://github.com/open-telemetry/opentelemetry-dotnet/pull/4568))
|
||||
|
||||
## 1.5.0
|
||||
|
||||
Released 2023-Jun-05
|
||||
|
|
|
|||
|
|
@ -74,7 +74,15 @@ namespace OpenTelemetry.Exporter
|
|||
this.WriteLine($"{"LogRecord.CategoryName:",-RightPaddingLength}{logRecord.CategoryName}");
|
||||
}
|
||||
|
||||
this.WriteLine($"{"LogRecord.LogLevel:",-RightPaddingLength}{logRecord.LogLevel}");
|
||||
if (logRecord.Severity.HasValue)
|
||||
{
|
||||
this.WriteLine($"{"LogRecord.Severity:",-RightPaddingLength}{logRecord.Severity}");
|
||||
}
|
||||
|
||||
if (logRecord.SeverityText != null)
|
||||
{
|
||||
this.WriteLine($"{"LogRecord.SeverityText:",-RightPaddingLength}{logRecord.SeverityText}");
|
||||
}
|
||||
|
||||
if (logRecord.FormattedMessage != null)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -28,13 +28,11 @@
|
|||
<Compile Include="$(RepoRoot)\src\OpenTelemetry.Api\Internal\ExceptionExtensions.cs" Link="Includes\ExceptionExtensions.cs" />
|
||||
<Compile Include="$(RepoRoot)\src\OpenTelemetry.Api\Internal\Guard.cs" Link="Includes\Guard.cs" />
|
||||
<Compile Include="$(RepoRoot)\src\OpenTelemetry.Api\Internal\SpanAttributeConstants.cs" Link="Includes\SpanAttributeConstants.cs" />
|
||||
<!-- Note: OpenTelemetry.Exporter.Console temporarily sees OpenTelemetry internals for LoggerProviderBuilder extensions
|
||||
<Compile Include="$(RepoRoot)\src\OpenTelemetry\Internal\OpenTelemetrySdkEventSource.cs" Link="Includes\OpenTelemetrySdkEventSource.cs" />
|
||||
<Compile Include="$(RepoRoot)\src\OpenTelemetry\Internal\PeriodicExportingMetricReaderHelper.cs" Link="Includes\PeriodicExportingMetricReaderHelper.cs" />
|
||||
<Compile Include="$(RepoRoot)\src\OpenTelemetry\Internal\TagTransformer.cs" Link="Includes\TagTransformer.cs" />
|
||||
<Compile Include="$(RepoRoot)\src\OpenTelemetry\Internal\Shims\UnconditionalSuppressMessageAttribute.cs" Link="Includes\UnconditionalSuppressMessageAttribute.cs" Condition="'$(TargetFrameworkIdentifier)' != '.NETCoreApp'" />
|
||||
<Compile Include="$(RepoRoot)\src\OpenTelemetry\Metrics\Base2ExponentialBucketHistogram.LowerBoundary.cs" Link="Includes\Base2ExponentialBucketHistogram.LowerBoundary.cs" />
|
||||
-->
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
* Merged `OpenTelemetry.Exporter.OpenTelemetryProtocol.Logs` package into
|
||||
`OpenTelemetry.Exporter.OpenTelemetryProtocol`. Going Forward,
|
||||
`OpenTelemetry.Exporter.OpenTelemetryProtocol` will be the only package needed
|
||||
for all 3 signals (Logs, Metrics and Traces). All the changes made in
|
||||
for all 3 signals (Logs, Metrics, and Traces). All the changes made in
|
||||
[`OpenTelemetry.Exporter.OpenTelemetryProtocol.Logs`](https://github.com/open-telemetry/opentelemetry-dotnet/blob/core-1.5.0/src/OpenTelemetry.Exporter.OpenTelemetryProtocol.Logs/CHANGELOG.md#changelog)
|
||||
are now included in this package.
|
||||
([#4556](https://github.com/open-telemetry/opentelemetry-dotnet/pull/4556))
|
||||
|
|
@ -14,6 +14,9 @@ are now included in this package.
|
|||
for instructions to enable exemplars.
|
||||
([#4553](https://github.com/open-telemetry/opentelemetry-dotnet/pull/4553))
|
||||
|
||||
* Updated to support `Severity` and `SeverityText` when exporting `LogRecord`s.
|
||||
([#4568](https://github.com/open-telemetry/opentelemetry-dotnet/pull/4568))
|
||||
|
||||
## 1.5.0
|
||||
|
||||
Released 2023-Jun-05
|
||||
|
|
|
|||
|
|
@ -16,7 +16,6 @@
|
|||
|
||||
using System.Runtime.CompilerServices;
|
||||
using Google.Protobuf;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using OpenTelemetry.Internal;
|
||||
using OpenTelemetry.Logs;
|
||||
using OpenTelemetry.Trace;
|
||||
|
|
@ -29,11 +28,6 @@ namespace OpenTelemetry.Exporter.OpenTelemetryProtocol.Implementation
|
|||
{
|
||||
internal static class LogRecordExtensions
|
||||
{
|
||||
private static readonly string[] LogLevels = new string[7]
|
||||
{
|
||||
"Trace", "Debug", "Information", "Warning", "Error", "Critical", "None",
|
||||
};
|
||||
|
||||
internal static void AddBatch(
|
||||
this OtlpCollector.ExportLogsServiceRequest request,
|
||||
SdkLimitOptions sdkLimitOptions,
|
||||
|
|
@ -71,10 +65,18 @@ namespace OpenTelemetry.Exporter.OpenTelemetryProtocol.Implementation
|
|||
{
|
||||
TimeUnixNano = timestamp,
|
||||
ObservedTimeUnixNano = timestamp,
|
||||
SeverityNumber = GetSeverityNumber(logRecord.LogLevel),
|
||||
SeverityText = LogLevels[(int)logRecord.LogLevel],
|
||||
SeverityNumber = GetSeverityNumber(logRecord.Severity),
|
||||
};
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(logRecord.SeverityText))
|
||||
{
|
||||
otlpLogRecord.SeverityText = logRecord.SeverityText;
|
||||
}
|
||||
else if (logRecord.Severity.HasValue)
|
||||
{
|
||||
otlpLogRecord.SeverityText = logRecord.Severity.Value.ToShortName();
|
||||
}
|
||||
|
||||
var attributeValueLengthLimit = sdkLimitOptions.AttributeValueLengthLimit;
|
||||
var attributeCountLimit = sdkLimitOptions.AttributeCountLimit ?? int.MaxValue;
|
||||
|
||||
|
|
@ -226,35 +228,14 @@ namespace OpenTelemetry.Exporter.OpenTelemetryProtocol.Implementation
|
|||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
private static OtlpLogs.SeverityNumber GetSeverityNumber(LogLevel logLevel)
|
||||
private static OtlpLogs.SeverityNumber GetSeverityNumber(LogRecordSeverity? severity)
|
||||
{
|
||||
// Maps the ILogger LogLevel to OpenTelemetry logging level.
|
||||
// https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/logs/data-model.md#appendix-b-severitynumber-example-mappings
|
||||
// TODO: for improving perf simply do ((int)loglevel * 4) + 1
|
||||
// or ((int)logLevel << 2) + 1
|
||||
// Current code is just for ease of reading.
|
||||
switch (logLevel)
|
||||
if (!severity.HasValue)
|
||||
{
|
||||
case LogLevel.Trace:
|
||||
return OtlpLogs.SeverityNumber.Trace;
|
||||
case LogLevel.Debug:
|
||||
return OtlpLogs.SeverityNumber.Debug;
|
||||
case LogLevel.Information:
|
||||
return OtlpLogs.SeverityNumber.Info;
|
||||
case LogLevel.Warning:
|
||||
return OtlpLogs.SeverityNumber.Warn;
|
||||
case LogLevel.Error:
|
||||
return OtlpLogs.SeverityNumber.Error;
|
||||
case LogLevel.Critical:
|
||||
return OtlpLogs.SeverityNumber.Fatal;
|
||||
return OtlpLogs.SeverityNumber.Unspecified;
|
||||
}
|
||||
|
||||
// TODO:
|
||||
// we reach default only for LogLevel.None
|
||||
// but that is filtered out anyway.
|
||||
// should we throw here then?
|
||||
default:
|
||||
return OtlpLogs.SeverityNumber.Debug;
|
||||
}
|
||||
return (OtlpLogs.SeverityNumber)(int)severity.Value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,3 +1,12 @@
|
|||
OpenTelemetry.Logs.BatchExportLogRecordProcessorOptions
|
||||
OpenTelemetry.Logs.BatchExportLogRecordProcessorOptions.BatchExportLogRecordProcessorOptions() -> void
|
||||
OpenTelemetry.Logs.LoggerProviderBuilderExtensions
|
||||
OpenTelemetry.Logs.LoggerProviderExtensions
|
||||
OpenTelemetry.Logs.LogRecord.Logger.get -> OpenTelemetry.Logs.Logger?
|
||||
OpenTelemetry.Logs.LogRecord.Severity.get -> OpenTelemetry.Logs.LogRecordSeverity?
|
||||
OpenTelemetry.Logs.LogRecord.Severity.set -> void
|
||||
OpenTelemetry.Logs.LogRecord.SeverityText.get -> string?
|
||||
OpenTelemetry.Logs.LogRecord.SeverityText.set -> void
|
||||
OpenTelemetry.Metrics.AlwaysOffExemplarFilter
|
||||
OpenTelemetry.Metrics.AlwaysOffExemplarFilter.AlwaysOffExemplarFilter() -> void
|
||||
OpenTelemetry.Metrics.AlwaysOnExemplarFilter
|
||||
|
|
@ -13,7 +22,17 @@ OpenTelemetry.Metrics.ExemplarFilter.ExemplarFilter() -> void
|
|||
OpenTelemetry.Metrics.MetricPoint.GetExemplars() -> OpenTelemetry.Metrics.Exemplar[]!
|
||||
OpenTelemetry.Metrics.TraceBasedExemplarFilter
|
||||
OpenTelemetry.Metrics.TraceBasedExemplarFilter.TraceBasedExemplarFilter() -> void
|
||||
static OpenTelemetry.Logs.LoggerProviderBuilderExtensions.AddProcessor(this OpenTelemetry.Logs.LoggerProviderBuilder! loggerProviderBuilder, OpenTelemetry.BaseProcessor<OpenTelemetry.Logs.LogRecord!>! processor) -> OpenTelemetry.Logs.LoggerProviderBuilder!
|
||||
static OpenTelemetry.Logs.LoggerProviderBuilderExtensions.AddProcessor(this OpenTelemetry.Logs.LoggerProviderBuilder! loggerProviderBuilder, System.Func<System.IServiceProvider!, OpenTelemetry.BaseProcessor<OpenTelemetry.Logs.LogRecord!>!>! implementationFactory) -> OpenTelemetry.Logs.LoggerProviderBuilder!
|
||||
static OpenTelemetry.Logs.LoggerProviderBuilderExtensions.AddProcessor<T>(this OpenTelemetry.Logs.LoggerProviderBuilder! loggerProviderBuilder) -> OpenTelemetry.Logs.LoggerProviderBuilder!
|
||||
static OpenTelemetry.Logs.LoggerProviderBuilderExtensions.Build(this OpenTelemetry.Logs.LoggerProviderBuilder! loggerProviderBuilder) -> OpenTelemetry.Logs.LoggerProvider!
|
||||
static OpenTelemetry.Logs.LoggerProviderBuilderExtensions.ConfigureResource(this OpenTelemetry.Logs.LoggerProviderBuilder! loggerProviderBuilder, System.Action<OpenTelemetry.Resources.ResourceBuilder!>! configure) -> OpenTelemetry.Logs.LoggerProviderBuilder!
|
||||
static OpenTelemetry.Logs.LoggerProviderBuilderExtensions.SetResourceBuilder(this OpenTelemetry.Logs.LoggerProviderBuilder! loggerProviderBuilder, OpenTelemetry.Resources.ResourceBuilder! resourceBuilder) -> OpenTelemetry.Logs.LoggerProviderBuilder!
|
||||
static OpenTelemetry.Logs.LoggerProviderExtensions.AddProcessor(this OpenTelemetry.Logs.LoggerProvider! provider, OpenTelemetry.BaseProcessor<OpenTelemetry.Logs.LogRecord!>! processor) -> OpenTelemetry.Logs.LoggerProvider!
|
||||
static OpenTelemetry.Logs.LoggerProviderExtensions.ForceFlush(this OpenTelemetry.Logs.LoggerProvider! provider, int timeoutMilliseconds = -1) -> bool
|
||||
static OpenTelemetry.Logs.LoggerProviderExtensions.Shutdown(this OpenTelemetry.Logs.LoggerProvider! provider, int timeoutMilliseconds = -1) -> bool
|
||||
static OpenTelemetry.Metrics.MeterProviderBuilderExtensions.SetExemplarFilter(this OpenTelemetry.Metrics.MeterProviderBuilder! meterProviderBuilder, OpenTelemetry.Metrics.ExemplarFilter! exemplarFilter) -> OpenTelemetry.Metrics.MeterProviderBuilder!
|
||||
static OpenTelemetry.Sdk.CreateLoggerProviderBuilder() -> OpenTelemetry.Logs.LoggerProviderBuilder!
|
||||
~abstract OpenTelemetry.Metrics.ExemplarFilter.ShouldSample(double value, System.ReadOnlySpan<System.Collections.Generic.KeyValuePair<string, object>> tags) -> bool
|
||||
~abstract OpenTelemetry.Metrics.ExemplarFilter.ShouldSample(long value, System.ReadOnlySpan<System.Collections.Generic.KeyValuePair<string, object>> tags) -> bool
|
||||
~OpenTelemetry.Metrics.Exemplar.FilteredTags.get -> System.Collections.Generic.List<System.Collections.Generic.KeyValuePair<string, object>>
|
||||
|
|
|
|||
|
|
@ -1,3 +1,12 @@
|
|||
OpenTelemetry.Logs.BatchExportLogRecordProcessorOptions
|
||||
OpenTelemetry.Logs.BatchExportLogRecordProcessorOptions.BatchExportLogRecordProcessorOptions() -> void
|
||||
OpenTelemetry.Logs.LoggerProviderBuilderExtensions
|
||||
OpenTelemetry.Logs.LoggerProviderExtensions
|
||||
OpenTelemetry.Logs.LogRecord.Logger.get -> OpenTelemetry.Logs.Logger?
|
||||
OpenTelemetry.Logs.LogRecord.Severity.get -> OpenTelemetry.Logs.LogRecordSeverity?
|
||||
OpenTelemetry.Logs.LogRecord.Severity.set -> void
|
||||
OpenTelemetry.Logs.LogRecord.SeverityText.get -> string?
|
||||
OpenTelemetry.Logs.LogRecord.SeverityText.set -> void
|
||||
OpenTelemetry.Metrics.AlwaysOffExemplarFilter
|
||||
OpenTelemetry.Metrics.AlwaysOffExemplarFilter.AlwaysOffExemplarFilter() -> void
|
||||
OpenTelemetry.Metrics.AlwaysOnExemplarFilter
|
||||
|
|
@ -13,7 +22,17 @@ OpenTelemetry.Metrics.ExemplarFilter.ExemplarFilter() -> void
|
|||
OpenTelemetry.Metrics.MetricPoint.GetExemplars() -> OpenTelemetry.Metrics.Exemplar[]!
|
||||
OpenTelemetry.Metrics.TraceBasedExemplarFilter
|
||||
OpenTelemetry.Metrics.TraceBasedExemplarFilter.TraceBasedExemplarFilter() -> void
|
||||
static OpenTelemetry.Logs.LoggerProviderBuilderExtensions.AddProcessor(this OpenTelemetry.Logs.LoggerProviderBuilder! loggerProviderBuilder, OpenTelemetry.BaseProcessor<OpenTelemetry.Logs.LogRecord!>! processor) -> OpenTelemetry.Logs.LoggerProviderBuilder!
|
||||
static OpenTelemetry.Logs.LoggerProviderBuilderExtensions.AddProcessor(this OpenTelemetry.Logs.LoggerProviderBuilder! loggerProviderBuilder, System.Func<System.IServiceProvider!, OpenTelemetry.BaseProcessor<OpenTelemetry.Logs.LogRecord!>!>! implementationFactory) -> OpenTelemetry.Logs.LoggerProviderBuilder!
|
||||
static OpenTelemetry.Logs.LoggerProviderBuilderExtensions.AddProcessor<T>(this OpenTelemetry.Logs.LoggerProviderBuilder! loggerProviderBuilder) -> OpenTelemetry.Logs.LoggerProviderBuilder!
|
||||
static OpenTelemetry.Logs.LoggerProviderBuilderExtensions.Build(this OpenTelemetry.Logs.LoggerProviderBuilder! loggerProviderBuilder) -> OpenTelemetry.Logs.LoggerProvider!
|
||||
static OpenTelemetry.Logs.LoggerProviderBuilderExtensions.ConfigureResource(this OpenTelemetry.Logs.LoggerProviderBuilder! loggerProviderBuilder, System.Action<OpenTelemetry.Resources.ResourceBuilder!>! configure) -> OpenTelemetry.Logs.LoggerProviderBuilder!
|
||||
static OpenTelemetry.Logs.LoggerProviderBuilderExtensions.SetResourceBuilder(this OpenTelemetry.Logs.LoggerProviderBuilder! loggerProviderBuilder, OpenTelemetry.Resources.ResourceBuilder! resourceBuilder) -> OpenTelemetry.Logs.LoggerProviderBuilder!
|
||||
static OpenTelemetry.Logs.LoggerProviderExtensions.AddProcessor(this OpenTelemetry.Logs.LoggerProvider! provider, OpenTelemetry.BaseProcessor<OpenTelemetry.Logs.LogRecord!>! processor) -> OpenTelemetry.Logs.LoggerProvider!
|
||||
static OpenTelemetry.Logs.LoggerProviderExtensions.ForceFlush(this OpenTelemetry.Logs.LoggerProvider! provider, int timeoutMilliseconds = -1) -> bool
|
||||
static OpenTelemetry.Logs.LoggerProviderExtensions.Shutdown(this OpenTelemetry.Logs.LoggerProvider! provider, int timeoutMilliseconds = -1) -> bool
|
||||
static OpenTelemetry.Metrics.MeterProviderBuilderExtensions.SetExemplarFilter(this OpenTelemetry.Metrics.MeterProviderBuilder! meterProviderBuilder, OpenTelemetry.Metrics.ExemplarFilter! exemplarFilter) -> OpenTelemetry.Metrics.MeterProviderBuilder!
|
||||
static OpenTelemetry.Sdk.CreateLoggerProviderBuilder() -> OpenTelemetry.Logs.LoggerProviderBuilder!
|
||||
~abstract OpenTelemetry.Metrics.ExemplarFilter.ShouldSample(double value, System.ReadOnlySpan<System.Collections.Generic.KeyValuePair<string, object>> tags) -> bool
|
||||
~abstract OpenTelemetry.Metrics.ExemplarFilter.ShouldSample(long value, System.ReadOnlySpan<System.Collections.Generic.KeyValuePair<string, object>> tags) -> bool
|
||||
~OpenTelemetry.Metrics.Exemplar.FilteredTags.get -> System.Collections.Generic.List<System.Collections.Generic.KeyValuePair<string, object>>
|
||||
|
|
|
|||
|
|
@ -1,3 +1,12 @@
|
|||
OpenTelemetry.Logs.BatchExportLogRecordProcessorOptions
|
||||
OpenTelemetry.Logs.BatchExportLogRecordProcessorOptions.BatchExportLogRecordProcessorOptions() -> void
|
||||
OpenTelemetry.Logs.LoggerProviderBuilderExtensions
|
||||
OpenTelemetry.Logs.LoggerProviderExtensions
|
||||
OpenTelemetry.Logs.LogRecord.Logger.get -> OpenTelemetry.Logs.Logger?
|
||||
OpenTelemetry.Logs.LogRecord.Severity.get -> OpenTelemetry.Logs.LogRecordSeverity?
|
||||
OpenTelemetry.Logs.LogRecord.Severity.set -> void
|
||||
OpenTelemetry.Logs.LogRecord.SeverityText.get -> string?
|
||||
OpenTelemetry.Logs.LogRecord.SeverityText.set -> void
|
||||
OpenTelemetry.Metrics.AlwaysOffExemplarFilter
|
||||
OpenTelemetry.Metrics.AlwaysOffExemplarFilter.AlwaysOffExemplarFilter() -> void
|
||||
OpenTelemetry.Metrics.AlwaysOnExemplarFilter
|
||||
|
|
@ -13,7 +22,17 @@ OpenTelemetry.Metrics.ExemplarFilter.ExemplarFilter() -> void
|
|||
OpenTelemetry.Metrics.MetricPoint.GetExemplars() -> OpenTelemetry.Metrics.Exemplar[]!
|
||||
OpenTelemetry.Metrics.TraceBasedExemplarFilter
|
||||
OpenTelemetry.Metrics.TraceBasedExemplarFilter.TraceBasedExemplarFilter() -> void
|
||||
static OpenTelemetry.Logs.LoggerProviderBuilderExtensions.AddProcessor(this OpenTelemetry.Logs.LoggerProviderBuilder! loggerProviderBuilder, OpenTelemetry.BaseProcessor<OpenTelemetry.Logs.LogRecord!>! processor) -> OpenTelemetry.Logs.LoggerProviderBuilder!
|
||||
static OpenTelemetry.Logs.LoggerProviderBuilderExtensions.AddProcessor(this OpenTelemetry.Logs.LoggerProviderBuilder! loggerProviderBuilder, System.Func<System.IServiceProvider!, OpenTelemetry.BaseProcessor<OpenTelemetry.Logs.LogRecord!>!>! implementationFactory) -> OpenTelemetry.Logs.LoggerProviderBuilder!
|
||||
static OpenTelemetry.Logs.LoggerProviderBuilderExtensions.AddProcessor<T>(this OpenTelemetry.Logs.LoggerProviderBuilder! loggerProviderBuilder) -> OpenTelemetry.Logs.LoggerProviderBuilder!
|
||||
static OpenTelemetry.Logs.LoggerProviderBuilderExtensions.Build(this OpenTelemetry.Logs.LoggerProviderBuilder! loggerProviderBuilder) -> OpenTelemetry.Logs.LoggerProvider!
|
||||
static OpenTelemetry.Logs.LoggerProviderBuilderExtensions.ConfigureResource(this OpenTelemetry.Logs.LoggerProviderBuilder! loggerProviderBuilder, System.Action<OpenTelemetry.Resources.ResourceBuilder!>! configure) -> OpenTelemetry.Logs.LoggerProviderBuilder!
|
||||
static OpenTelemetry.Logs.LoggerProviderBuilderExtensions.SetResourceBuilder(this OpenTelemetry.Logs.LoggerProviderBuilder! loggerProviderBuilder, OpenTelemetry.Resources.ResourceBuilder! resourceBuilder) -> OpenTelemetry.Logs.LoggerProviderBuilder!
|
||||
static OpenTelemetry.Logs.LoggerProviderExtensions.AddProcessor(this OpenTelemetry.Logs.LoggerProvider! provider, OpenTelemetry.BaseProcessor<OpenTelemetry.Logs.LogRecord!>! processor) -> OpenTelemetry.Logs.LoggerProvider!
|
||||
static OpenTelemetry.Logs.LoggerProviderExtensions.ForceFlush(this OpenTelemetry.Logs.LoggerProvider! provider, int timeoutMilliseconds = -1) -> bool
|
||||
static OpenTelemetry.Logs.LoggerProviderExtensions.Shutdown(this OpenTelemetry.Logs.LoggerProvider! provider, int timeoutMilliseconds = -1) -> bool
|
||||
static OpenTelemetry.Metrics.MeterProviderBuilderExtensions.SetExemplarFilter(this OpenTelemetry.Metrics.MeterProviderBuilder! meterProviderBuilder, OpenTelemetry.Metrics.ExemplarFilter! exemplarFilter) -> OpenTelemetry.Metrics.MeterProviderBuilder!
|
||||
static OpenTelemetry.Sdk.CreateLoggerProviderBuilder() -> OpenTelemetry.Logs.LoggerProviderBuilder!
|
||||
~abstract OpenTelemetry.Metrics.ExemplarFilter.ShouldSample(double value, System.ReadOnlySpan<System.Collections.Generic.KeyValuePair<string, object>> tags) -> bool
|
||||
~abstract OpenTelemetry.Metrics.ExemplarFilter.ShouldSample(long value, System.ReadOnlySpan<System.Collections.Generic.KeyValuePair<string, object>> tags) -> bool
|
||||
~OpenTelemetry.Metrics.Exemplar.FilteredTags.get -> System.Collections.Generic.List<System.Collections.Generic.KeyValuePair<string, object>>
|
||||
|
|
|
|||
|
|
@ -1,3 +1,12 @@
|
|||
OpenTelemetry.Logs.BatchExportLogRecordProcessorOptions
|
||||
OpenTelemetry.Logs.BatchExportLogRecordProcessorOptions.BatchExportLogRecordProcessorOptions() -> void
|
||||
OpenTelemetry.Logs.LoggerProviderBuilderExtensions
|
||||
OpenTelemetry.Logs.LoggerProviderExtensions
|
||||
OpenTelemetry.Logs.LogRecord.Logger.get -> OpenTelemetry.Logs.Logger?
|
||||
OpenTelemetry.Logs.LogRecord.Severity.get -> OpenTelemetry.Logs.LogRecordSeverity?
|
||||
OpenTelemetry.Logs.LogRecord.Severity.set -> void
|
||||
OpenTelemetry.Logs.LogRecord.SeverityText.get -> string?
|
||||
OpenTelemetry.Logs.LogRecord.SeverityText.set -> void
|
||||
OpenTelemetry.Metrics.AlwaysOffExemplarFilter
|
||||
OpenTelemetry.Metrics.AlwaysOffExemplarFilter.AlwaysOffExemplarFilter() -> void
|
||||
OpenTelemetry.Metrics.AlwaysOnExemplarFilter
|
||||
|
|
@ -13,7 +22,17 @@ OpenTelemetry.Metrics.ExemplarFilter.ExemplarFilter() -> void
|
|||
OpenTelemetry.Metrics.MetricPoint.GetExemplars() -> OpenTelemetry.Metrics.Exemplar[]!
|
||||
OpenTelemetry.Metrics.TraceBasedExemplarFilter
|
||||
OpenTelemetry.Metrics.TraceBasedExemplarFilter.TraceBasedExemplarFilter() -> void
|
||||
static OpenTelemetry.Logs.LoggerProviderBuilderExtensions.AddProcessor(this OpenTelemetry.Logs.LoggerProviderBuilder! loggerProviderBuilder, OpenTelemetry.BaseProcessor<OpenTelemetry.Logs.LogRecord!>! processor) -> OpenTelemetry.Logs.LoggerProviderBuilder!
|
||||
static OpenTelemetry.Logs.LoggerProviderBuilderExtensions.AddProcessor(this OpenTelemetry.Logs.LoggerProviderBuilder! loggerProviderBuilder, System.Func<System.IServiceProvider!, OpenTelemetry.BaseProcessor<OpenTelemetry.Logs.LogRecord!>!>! implementationFactory) -> OpenTelemetry.Logs.LoggerProviderBuilder!
|
||||
static OpenTelemetry.Logs.LoggerProviderBuilderExtensions.AddProcessor<T>(this OpenTelemetry.Logs.LoggerProviderBuilder! loggerProviderBuilder) -> OpenTelemetry.Logs.LoggerProviderBuilder!
|
||||
static OpenTelemetry.Logs.LoggerProviderBuilderExtensions.Build(this OpenTelemetry.Logs.LoggerProviderBuilder! loggerProviderBuilder) -> OpenTelemetry.Logs.LoggerProvider!
|
||||
static OpenTelemetry.Logs.LoggerProviderBuilderExtensions.ConfigureResource(this OpenTelemetry.Logs.LoggerProviderBuilder! loggerProviderBuilder, System.Action<OpenTelemetry.Resources.ResourceBuilder!>! configure) -> OpenTelemetry.Logs.LoggerProviderBuilder!
|
||||
static OpenTelemetry.Logs.LoggerProviderBuilderExtensions.SetResourceBuilder(this OpenTelemetry.Logs.LoggerProviderBuilder! loggerProviderBuilder, OpenTelemetry.Resources.ResourceBuilder! resourceBuilder) -> OpenTelemetry.Logs.LoggerProviderBuilder!
|
||||
static OpenTelemetry.Logs.LoggerProviderExtensions.AddProcessor(this OpenTelemetry.Logs.LoggerProvider! provider, OpenTelemetry.BaseProcessor<OpenTelemetry.Logs.LogRecord!>! processor) -> OpenTelemetry.Logs.LoggerProvider!
|
||||
static OpenTelemetry.Logs.LoggerProviderExtensions.ForceFlush(this OpenTelemetry.Logs.LoggerProvider! provider, int timeoutMilliseconds = -1) -> bool
|
||||
static OpenTelemetry.Logs.LoggerProviderExtensions.Shutdown(this OpenTelemetry.Logs.LoggerProvider! provider, int timeoutMilliseconds = -1) -> bool
|
||||
static OpenTelemetry.Metrics.MeterProviderBuilderExtensions.SetExemplarFilter(this OpenTelemetry.Metrics.MeterProviderBuilder! meterProviderBuilder, OpenTelemetry.Metrics.ExemplarFilter! exemplarFilter) -> OpenTelemetry.Metrics.MeterProviderBuilder!
|
||||
static OpenTelemetry.Sdk.CreateLoggerProviderBuilder() -> OpenTelemetry.Logs.LoggerProviderBuilder!
|
||||
~abstract OpenTelemetry.Metrics.ExemplarFilter.ShouldSample(double value, System.ReadOnlySpan<System.Collections.Generic.KeyValuePair<string, object>> tags) -> bool
|
||||
~abstract OpenTelemetry.Metrics.ExemplarFilter.ShouldSample(long value, System.ReadOnlySpan<System.Collections.Generic.KeyValuePair<string, object>> tags) -> bool
|
||||
~OpenTelemetry.Metrics.Exemplar.FilteredTags.get -> System.Collections.Generic.List<System.Collections.Generic.KeyValuePair<string, object>>
|
||||
|
|
|
|||
|
|
@ -17,7 +17,6 @@
|
|||
using System.Runtime.CompilerServices;
|
||||
|
||||
[assembly: InternalsVisibleTo("OpenTelemetry.Tests" + AssemblyInfo.PublicKey)]
|
||||
[assembly: InternalsVisibleTo("OpenTelemetry.Exporter.Console" + AssemblyInfo.PublicKey)]
|
||||
[assembly: InternalsVisibleTo("OpenTelemetry.Exporter.InMemory" + AssemblyInfo.PublicKey)]
|
||||
[assembly: InternalsVisibleTo("OpenTelemetry.Exporter.Prometheus.AspNetCore" + AssemblyInfo.PublicKey)]
|
||||
[assembly: InternalsVisibleTo("OpenTelemetry.Exporter.Prometheus.AspNetCore.Tests" + AssemblyInfo.PublicKey)]
|
||||
|
|
|
|||
|
|
@ -6,6 +6,22 @@
|
|||
for instructions to enable exemplars.
|
||||
([#4553](https://github.com/open-telemetry/opentelemetry-dotnet/pull/4553))
|
||||
|
||||
* Added [Logs Bridge
|
||||
API](https://github.com/open-telemetry/opentelemetry-specification/blob/976432b74c565e8a84af3570e9b82cb95e1d844c/specification/logs/bridge-api.md)
|
||||
implementation (`Sdk.CreateLoggerProviderBuilder`, etc.).
|
||||
([#4433](https://github.com/open-telemetry/opentelemetry-dotnet/pull/4433))
|
||||
|
||||
* Obsoleted `LogRecord.LogLevel` in favor of the `LogRecord.Severity` property
|
||||
which matches the [OpenTelemetry Specification > Logs DataModel > Severity
|
||||
definition](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/logs/data-model.md#field-severitynumber).
|
||||
([#4433](https://github.com/open-telemetry/opentelemetry-dotnet/pull/4433))
|
||||
|
||||
* Added `LogRecord.Logger` property to access the [OpenTelemetry Specification >
|
||||
Instrumentation
|
||||
Scope](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/glossary.md#instrumentation-scope)
|
||||
provided during Logger creation.
|
||||
([#4433](https://github.com/open-telemetry/opentelemetry-dotnet/pull/4433))
|
||||
|
||||
## 1.5.0
|
||||
|
||||
Released 2023-Jun-05
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ namespace OpenTelemetry.Logs;
|
|||
/// OTEL_BLRP_SCHEDULE_DELAY environment variables are parsed during object
|
||||
/// construction.
|
||||
/// </summary>
|
||||
internal class BatchExportLogRecordProcessorOptions : BatchExportProcessorOptions<LogRecord>
|
||||
public class BatchExportLogRecordProcessorOptions : BatchExportProcessorOptions<LogRecord>
|
||||
{
|
||||
internal const string MaxQueueSizeEnvVarKey = "OTEL_BLRP_MAX_QUEUE_SIZE";
|
||||
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ namespace OpenTelemetry.Logs;
|
|||
/// <summary>
|
||||
/// Contains extension methods for the <see cref="LoggerProviderBuilder"/> class.
|
||||
/// </summary>
|
||||
internal static class LoggerProviderBuilderExtensions
|
||||
public static class LoggerProviderBuilderExtensions
|
||||
{
|
||||
/// <summary>
|
||||
/// Sets the <see cref="ResourceBuilder"/> from which the Resource associated with
|
||||
|
|
|
|||
|
|
@ -157,7 +157,6 @@ internal sealed class OpenTelemetryLogger : ILogger
|
|||
{
|
||||
iLoggerData.State = null;
|
||||
|
||||
/* TODO: Enable this if/when LogRecordAttributeList becomes public.
|
||||
if (typeof(TState) == typeof(LogRecordAttributeList))
|
||||
{
|
||||
// Note: This block is written to be elided by the JIT when
|
||||
|
|
@ -169,8 +168,7 @@ internal sealed class OpenTelemetryLogger : ILogger
|
|||
|
||||
return logRecordAttributes.Export(ref logRecord.AttributeStorage);
|
||||
}
|
||||
else */
|
||||
if (state is IReadOnlyList<KeyValuePair<string, object?>> stateList)
|
||||
else if (state is IReadOnlyList<KeyValuePair<string, object?>> stateList)
|
||||
{
|
||||
return stateList;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -148,6 +148,9 @@ public sealed class LogRecord
|
|||
/// <summary>
|
||||
/// Gets or sets the log category name.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Note: <see cref="CategoryName"/> is only set when emitting logs through <see cref="ILogger"/>.
|
||||
/// </remarks>
|
||||
public string? CategoryName
|
||||
{
|
||||
get => this.ILoggerData.CategoryName;
|
||||
|
|
@ -157,7 +160,7 @@ public sealed class LogRecord
|
|||
/// <summary>
|
||||
/// Gets or sets the log <see cref="Microsoft.Extensions.Logging.LogLevel"/>.
|
||||
/// </summary>
|
||||
// todo: [Obsolete("Use Severity instead LogLevel will be removed in a future version.")]
|
||||
[Obsolete("Use Severity instead. LogLevel will be removed in a future version.")]
|
||||
public LogLevel LogLevel
|
||||
{
|
||||
get
|
||||
|
|
@ -183,6 +186,9 @@ public sealed class LogRecord
|
|||
/// <summary>
|
||||
/// Gets or sets the log <see cref="Microsoft.Extensions.Logging.EventId"/>.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Note: <see cref="EventId"/> is only set when emitting logs through <see cref="ILogger"/>.
|
||||
/// </remarks>
|
||||
public EventId EventId
|
||||
{
|
||||
get => this.ILoggerData.EventId;
|
||||
|
|
@ -193,10 +199,15 @@ public sealed class LogRecord
|
|||
/// Gets or sets the log formatted message.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Note: Set if <see
|
||||
/// cref="OpenTelemetryLoggerOptions.IncludeFormattedMessage"/> is
|
||||
/// enabled or <c>{OriginalFormat}</c> attribute (message template) is
|
||||
/// not found.
|
||||
/// Notes:
|
||||
/// <list type="bullet">
|
||||
/// <item><see cref="FormattedMessage"/> is only set when emitting logs
|
||||
/// through <see cref="ILogger"/>.</item>
|
||||
/// <item>Set if <see
|
||||
/// cref="OpenTelemetryLoggerOptions.IncludeFormattedMessage"/> is enabled
|
||||
/// or <c>{OriginalFormat}</c> attribute (message template) is not
|
||||
/// found.</item>
|
||||
/// </list>
|
||||
/// </remarks>
|
||||
public string? FormattedMessage
|
||||
{
|
||||
|
|
@ -221,8 +232,13 @@ public sealed class LogRecord
|
|||
/// Gets or sets the raw state attached to the log.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Note: Set to <see langword="null"/> when <see
|
||||
/// cref="OpenTelemetryLoggerOptions.ParseStateValues"/> is enabled.
|
||||
/// Notes:
|
||||
/// <list type="bullet">
|
||||
/// <item><see cref="State"/> is only set when emitting logs
|
||||
/// through <see cref="ILogger"/>.</item>
|
||||
/// <item>Set to <see langword="null"/> when <see
|
||||
/// cref="OpenTelemetryLoggerOptions.ParseStateValues"/> is enabled.</item>
|
||||
/// </list>
|
||||
/// </remarks>
|
||||
[Obsolete("State cannot be accessed safely outside of an ILogger.Log call stack. Use Attributes instead to safely access the data attached to a LogRecord. State will be removed in a future version.")]
|
||||
public object? State
|
||||
|
|
@ -235,7 +251,7 @@ public sealed class LogRecord
|
|||
/// Gets or sets the state values attached to the log.
|
||||
/// </summary>
|
||||
/// <remarks><inheritdoc cref="Attributes" /></remarks>
|
||||
[Obsolete("Use Attributes instead StateValues will be removed in a future version.")]
|
||||
[Obsolete("Use Attributes instead. StateValues will be removed in a future version.")]
|
||||
public IReadOnlyList<KeyValuePair<string, object?>>? StateValues
|
||||
{
|
||||
get => this.Attributes;
|
||||
|
|
@ -259,6 +275,9 @@ public sealed class LogRecord
|
|||
/// <summary>
|
||||
/// Gets or sets the log <see cref="System.Exception"/>.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Note: <see cref="Exception"/> is only set when emitting logs through <see cref="ILogger"/>.
|
||||
/// </remarks>
|
||||
public Exception? Exception
|
||||
{
|
||||
get => this.ILoggerData.Exception;
|
||||
|
|
@ -269,7 +288,7 @@ public sealed class LogRecord
|
|||
/// Gets or sets the original string representation of the severity as it is
|
||||
/// known at the source.
|
||||
/// </summary>
|
||||
internal string? SeverityText
|
||||
public string? SeverityText
|
||||
{
|
||||
get => this.Data.SeverityText;
|
||||
set => this.Data.SeverityText = value;
|
||||
|
|
@ -278,16 +297,16 @@ public sealed class LogRecord
|
|||
/// <summary>
|
||||
/// Gets or sets the log <see cref="LogRecordSeverity"/>.
|
||||
/// </summary>
|
||||
internal LogRecordSeverity? Severity
|
||||
public LogRecordSeverity? Severity
|
||||
{
|
||||
get => this.Data.Severity;
|
||||
set => this.Data.Severity = value;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the <see cref="Logs.Logger"/> which emitted the <see cref="LogRecord"/>.
|
||||
/// Gets the <see cref="Logs.Logger"/> which emitted the <see cref="LogRecord"/>.
|
||||
/// </summary>
|
||||
internal Logger? Logger { get; /*todo: internal*/ set; }
|
||||
public Logger? Logger { get; internal set; }
|
||||
|
||||
/// <summary>
|
||||
/// Executes callback for each currently active scope objects in order
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ namespace OpenTelemetry.Logs;
|
|||
/// <summary>
|
||||
/// Contains extension methods for the <see cref="LoggerProvider"/> class.
|
||||
/// </summary>
|
||||
internal static class LoggerProviderExtensions
|
||||
public static class LoggerProviderExtensions
|
||||
{
|
||||
/// <summary>
|
||||
/// Add a processor to the <see cref="LoggerProvider"/>.
|
||||
|
|
|
|||
|
|
@ -59,6 +59,20 @@ namespace OpenTelemetry
|
|||
Propagators.DefaultTextMapPropagator = textMapPropagator;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates a <see cref="LoggerProviderBuilder"/> which is used to build
|
||||
/// a <see cref="LoggerProvider"/>. In a typical application, a single
|
||||
/// <see cref="LoggerProvider"/> is created at application startup and
|
||||
/// disposed at application shutdown. It is important to ensure that the
|
||||
/// provider is not disposed too early.
|
||||
/// </summary>
|
||||
/// <returns><see cref="LoggerProviderBuilder"/> instance, which is used
|
||||
/// to build a <see cref="LoggerProvider"/>.</returns>
|
||||
public static LoggerProviderBuilder CreateLoggerProviderBuilder()
|
||||
{
|
||||
return new LoggerProviderBuilderBase();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates a <see cref="MeterProviderBuilder"/> which is used to build
|
||||
/// a <see cref="MeterProvider"/>. In a typical application, a single
|
||||
|
|
@ -84,19 +98,5 @@ namespace OpenTelemetry
|
|||
{
|
||||
return new TracerProviderBuilderBase();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates a <see cref="LoggerProviderBuilder"/> which is used to build
|
||||
/// a <see cref="LoggerProvider"/>. In a typical application, a single
|
||||
/// <see cref="LoggerProvider"/> is created at application startup and
|
||||
/// disposed at application shutdown. It is important to ensure that the
|
||||
/// provider is not disposed too early.
|
||||
/// </summary>
|
||||
/// <returns><see cref="LoggerProviderBuilder"/> instance, which is used
|
||||
/// to build a <see cref="LoggerProvider"/>.</returns>
|
||||
internal static LoggerProviderBuilder CreateLoggerProviderBuilder()
|
||||
{
|
||||
return new LoggerProviderBuilderBase();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -382,7 +382,10 @@ namespace OpenTelemetry.Exporter.OpenTelemetryProtocol.Tests
|
|||
var otlpLogRecord = logRecord.ToOtlpLog(DefaultSdkLimitOptions);
|
||||
|
||||
Assert.NotNull(otlpLogRecord);
|
||||
#pragma warning disable CS0618 // Type or member is obsolete
|
||||
Assert.Equal(logRecord.LogLevel.ToString(), otlpLogRecord.SeverityText);
|
||||
#pragma warning restore CS0618 // Type or member is obsolete
|
||||
Assert.Equal((int)logRecord.Severity, (int)otlpLogRecord.SeverityNumber);
|
||||
switch (logLevel)
|
||||
{
|
||||
case LogLevel.Trace:
|
||||
|
|
|
|||
Loading…
Reference in New Issue