Split out logs API (#4764)
This commit is contained in:
parent
ce533c8ff9
commit
f7317c6e8d
11
README.md
11
README.md
|
@ -221,11 +221,12 @@ dependency as follows, replacing `{{artifact-id}}` with the value from the "Arti
|
|||
|
||||
### API
|
||||
|
||||
| Component | Description | Artifact ID | Version |
|
||||
|-----------------------------------|----------------------------------------------------------------|-------------------------|-------------------------------------------------------------|
|
||||
| [API](./api/all) | OpenTelemetry API, including metrics, traces, baggage, context | `opentelemetry-api` | <!--VERSION_STABLE-->1.18.0<!--/VERSION_STABLE--> |
|
||||
| [Context API](./context) | OpenTelemetry context API | `opentelemetry-context` | <!--VERSION_STABLE-->1.18.0<!--/VERSION_STABLE--> |
|
||||
| [Semantic Conventions](./semconv) | Generated code for OpenTelemetry semantic conventions | `opentelemetry-semconv` | <!--VERSION_UNSTABLE-->1.18.0-alpha<!--/VERSION_UNSTABLE--> |
|
||||
| Component | Description | Artifact ID | Version |
|
||||
|-----------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------|----------------------------------------------------------------------------------|
|
||||
| [API](./api/all) | OpenTelemetry API, including metrics, traces, baggage, context | `opentelemetry-api` | <!--VERSION_STABLE-->1.18.0<!--/VERSION_STABLE--> |
|
||||
| [Logs API](./api/logs) | OpenTelemetry Log API for emitting events and bridging log frameworks (NOT a replacement for application logging frameworks like SLF4J, JUL, etc.) | `opentelemetry-api-logs` | <!--VERSION_UNSTABLE-->TODO: add version after published<!--/VERSION_UNSTABLE--> |
|
||||
| [Context API](./context) | OpenTelemetry context API | `opentelemetry-context` | <!--VERSION_STABLE-->1.18.0<!--/VERSION_STABLE--> |
|
||||
| [Semantic Conventions](./semconv) | Generated code for OpenTelemetry semantic conventions | `opentelemetry-semconv` | <!--VERSION_UNSTABLE-->1.18.0-alpha<!--/VERSION_UNSTABLE--> |
|
||||
|
||||
### API Extensions
|
||||
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
plugins {
|
||||
id("otel.java-conventions")
|
||||
id("otel.publish-conventions")
|
||||
|
||||
id("otel.animalsniffer-conventions")
|
||||
}
|
||||
|
||||
description = "OpenTelemetry Logs API"
|
||||
otelJava.moduleName.set("io.opentelemetry.api.logs")
|
||||
|
||||
dependencies {
|
||||
api(project(":api:all"))
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
otel.release=alpha
|
|
@ -3,53 +3,31 @@
|
|||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.sdk.logs;
|
||||
package io.opentelemetry.api.logs;
|
||||
|
||||
import io.opentelemetry.api.common.AttributeKey;
|
||||
import io.opentelemetry.context.Context;
|
||||
import io.opentelemetry.sdk.logs.data.Severity;
|
||||
import java.time.Instant;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
class NoopLoggerBuilder implements LoggerBuilder {
|
||||
class DefaultLogger implements Logger {
|
||||
|
||||
private static final NoopLoggerBuilder INSTANCE = new NoopLoggerBuilder();
|
||||
private static final NoopLogger NOOP_LOGGER = new NoopLogger();
|
||||
private static final Logger INSTANCE = new DefaultLogger();
|
||||
|
||||
private NoopLoggerBuilder() {}
|
||||
private static final LogRecordBuilder NOOP_LOG_RECORD_BUILDER = new NoopLogRecordBuilder();
|
||||
|
||||
static LoggerBuilder getInstance() {
|
||||
private DefaultLogger() {}
|
||||
|
||||
static Logger getInstance() {
|
||||
return INSTANCE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public LoggerBuilder setSchemaUrl(String schemaUrl) {
|
||||
return this;
|
||||
public LogRecordBuilder logRecordBuilder() {
|
||||
return NOOP_LOG_RECORD_BUILDER;
|
||||
}
|
||||
|
||||
@Override
|
||||
public LoggerBuilder setInstrumentationVersion(String instrumentationScopeVersion) {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Logger build() {
|
||||
return NOOP_LOGGER;
|
||||
}
|
||||
|
||||
private static class NoopLogger implements Logger {
|
||||
|
||||
private static final NoopLogRecordBuilder NOOP_LOG_BUILDER = new NoopLogRecordBuilder();
|
||||
|
||||
private NoopLogger() {}
|
||||
|
||||
@Override
|
||||
public LogRecordBuilder logRecordBuilder() {
|
||||
return NOOP_LOG_BUILDER;
|
||||
}
|
||||
}
|
||||
|
||||
private static class NoopLogRecordBuilder implements LogRecordBuilder {
|
||||
private static final class NoopLogRecordBuilder implements LogRecordBuilder {
|
||||
|
||||
private NoopLogRecordBuilder() {}
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.api.logs;
|
||||
|
||||
class DefaultLoggerProvider implements LoggerProvider {
|
||||
|
||||
private static final LoggerProvider INSTANCE = new DefaultLoggerProvider();
|
||||
private static final LoggerBuilder NOOP_BUILDER = new NoopLoggerBuilder();
|
||||
|
||||
private DefaultLoggerProvider() {}
|
||||
|
||||
static LoggerProvider getInstance() {
|
||||
return INSTANCE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public LoggerBuilder loggerBuilder(String instrumentationScopeName) {
|
||||
return NOOP_BUILDER;
|
||||
}
|
||||
|
||||
private static class NoopLoggerBuilder implements LoggerBuilder {
|
||||
|
||||
private NoopLoggerBuilder() {}
|
||||
|
||||
@Override
|
||||
public LoggerBuilder setSchemaUrl(String schemaUrl) {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public LoggerBuilder setInstrumentationVersion(String instrumentationVersion) {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Logger build() {
|
||||
return DefaultLogger.getInstance();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,34 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.api.logs;
|
||||
|
||||
import io.opentelemetry.api.GlobalOpenTelemetry;
|
||||
|
||||
/**
|
||||
* This class provides a temporary global accessor for {@link LoggerProvider} until the log API is
|
||||
* marked stable. It will eventually be merged into {@link GlobalOpenTelemetry}.
|
||||
*/
|
||||
public final class GlobalLoggerProvider {
|
||||
|
||||
private static volatile LoggerProvider globalLoggerProvider = DefaultLoggerProvider.getInstance();
|
||||
|
||||
private GlobalLoggerProvider() {}
|
||||
|
||||
/** Returns the globally registered {@link LoggerProvider}. */
|
||||
public static LoggerProvider get() {
|
||||
return globalLoggerProvider;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the global {@link LoggerProvider}. Future calls to {@link #get()} will return the provided
|
||||
* {@link LoggerProvider} instance. This should be called once as early as possible in your
|
||||
* application initialization logic.
|
||||
*/
|
||||
public static void set(LoggerProvider loggerProvider) {
|
||||
globalLoggerProvider =
|
||||
loggerProvider == null ? DefaultLoggerProvider.getInstance() : loggerProvider;
|
||||
}
|
||||
}
|
|
@ -3,20 +3,19 @@
|
|||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.sdk.logs;
|
||||
package io.opentelemetry.api.logs;
|
||||
|
||||
import io.opentelemetry.api.common.AttributeKey;
|
||||
import io.opentelemetry.api.common.Attributes;
|
||||
import io.opentelemetry.context.Context;
|
||||
import io.opentelemetry.sdk.logs.data.Severity;
|
||||
import java.time.Instant;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
/**
|
||||
* Used to construct and emit logs from a {@link Logger}.
|
||||
* Used to construct and emit log records from a {@link Logger}.
|
||||
*
|
||||
* <p>Obtain a {@link Logger#logRecordBuilder()}, add properties using the setters, and emit the log
|
||||
* to downstream {@link LogProcessor}(s) by calling {@link #emit()}.
|
||||
* record by calling {@link #emit()}.
|
||||
*/
|
||||
public interface LogRecordBuilder {
|
||||
|
||||
|
@ -55,6 +54,6 @@ public interface LogRecordBuilder {
|
|||
/** Sets an attribute. */
|
||||
<T> LogRecordBuilder setAttribute(AttributeKey<T> key, T value);
|
||||
|
||||
/** Emit the log to downstream {@link LogProcessor}(s). */
|
||||
/** Emit the log record. */
|
||||
void emit();
|
||||
}
|
|
@ -3,15 +3,15 @@
|
|||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.sdk.logs;
|
||||
package io.opentelemetry.api.logs;
|
||||
|
||||
import javax.annotation.concurrent.ThreadSafe;
|
||||
|
||||
/**
|
||||
* A {@link Logger} is the entry point into a log pipeline.
|
||||
*
|
||||
* <p>Obtain a {@link #logRecordBuilder()}, add properties using the setters, and emit it to
|
||||
* downstream {@link LogProcessor}(s) via {@link LogRecordBuilder#emit()}.
|
||||
* <p>Obtain a {@link #logRecordBuilder()}, add properties using the setters, and emit it via {@link
|
||||
* LogRecordBuilder#emit()}.
|
||||
*/
|
||||
@ThreadSafe
|
||||
public interface Logger {
|
||||
|
@ -19,8 +19,12 @@ public interface Logger {
|
|||
/**
|
||||
* Return a {@link LogRecordBuilder} to emit a log record.
|
||||
*
|
||||
* <p>Build the log record using the {@link LogRecordBuilder} setters, and emit it to downstream
|
||||
* {@link LogProcessor}(s) via {@link LogRecordBuilder#emit()}.
|
||||
* <p><b>IMPORTANT:</b> this should be used to write appenders to bridge logs from logging
|
||||
* frameworks (e.g. SLF4J, Log4j, JUL, Logback, etc). It is <b>NOT</b> a replacement for an
|
||||
* application logging framework, and should not be used by application developers.
|
||||
*
|
||||
* <p>Build the log record using the {@link LogRecordBuilder} setters, and emit via {@link
|
||||
* LogRecordBuilder#emit()}.
|
||||
*/
|
||||
LogRecordBuilder logRecordBuilder();
|
||||
}
|
|
@ -3,7 +3,7 @@
|
|||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.sdk.logs;
|
||||
package io.opentelemetry.api.logs;
|
||||
|
||||
/** Builder class for creating {@link Logger} instances. */
|
||||
public interface LoggerBuilder {
|
|
@ -0,0 +1,54 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.api.logs;
|
||||
|
||||
import javax.annotation.concurrent.ThreadSafe;
|
||||
|
||||
/**
|
||||
* A registry for creating scoped {@link Logger}s. The name <i>Provider</i> is for consistency with
|
||||
* other languages and it is <b>NOT</b> loaded using reflection.
|
||||
*
|
||||
* <p>The OpenTelemetry logging API exists to satisfy two use cases:
|
||||
*
|
||||
* <ol>
|
||||
* <li>Enable the creation of log appenders, which bridge logs from other log frameworks (e.g.
|
||||
* SLF4J, Log4j, JUL, Logback, etc) into OpenTelemetry via {@link Logger#logRecordBuilder()}.
|
||||
* It is <b>NOT</b> a replacement log framework.
|
||||
* <li>Enable emitting structured <a
|
||||
* href="https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/logs/semantic_conventions/events.md">events</a>.
|
||||
* TODO: add link when event API is added.
|
||||
* </ol>
|
||||
*
|
||||
* @see Logger
|
||||
*/
|
||||
@ThreadSafe
|
||||
public interface LoggerProvider {
|
||||
|
||||
/**
|
||||
* Gets or creates a named Logger instance.
|
||||
*
|
||||
* @param instrumentationScopeName A name uniquely identifying the instrumentation scope, such as
|
||||
* the instrumentation library, package, or fully qualified class name. Must not be null.
|
||||
* @return a Logger instance.
|
||||
*/
|
||||
default Logger get(String instrumentationScopeName) {
|
||||
return loggerBuilder(instrumentationScopeName).build();
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a LoggerBuilder for a named Logger instance.
|
||||
*
|
||||
* @param instrumentationScopeName A name uniquely identifying the instrumentation scope, such as
|
||||
* the instrumentation library, package, or fully qualified class name. Must not be null.
|
||||
* @return a LoggerBuilder instance.
|
||||
*/
|
||||
LoggerBuilder loggerBuilder(String instrumentationScopeName);
|
||||
|
||||
/** Returns a no-op {@link LoggerProvider} which provides Loggers which do not record or emit. */
|
||||
static LoggerProvider noop() {
|
||||
return DefaultLoggerProvider.getInstance();
|
||||
}
|
||||
}
|
|
@ -3,7 +3,7 @@
|
|||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.sdk.logs.data;
|
||||
package io.opentelemetry.api.logs;
|
||||
|
||||
public enum Severity {
|
||||
UNDEFINED_SEVERITY_NUMBER(0),
|
|
@ -0,0 +1,31 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.api.logs;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.assertj.core.api.Assertions.assertThatCode;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
class DefaultLoggerProviderTest {
|
||||
|
||||
@Test
|
||||
void noopLoggerProvider_doesNotThrow() {
|
||||
LoggerProvider provider = LoggerProvider.noop();
|
||||
|
||||
assertThat(provider).isSameAs(DefaultLoggerProvider.getInstance());
|
||||
assertThatCode(() -> provider.get("scope-name")).doesNotThrowAnyException();
|
||||
assertThatCode(
|
||||
() ->
|
||||
provider
|
||||
.loggerBuilder("scope-name")
|
||||
.setInstrumentationVersion("1.0")
|
||||
.setSchemaUrl("http://schema.com")
|
||||
.build())
|
||||
.doesNotThrowAnyException();
|
||||
;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,38 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.api.logs;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThatCode;
|
||||
|
||||
import io.opentelemetry.api.common.AttributeKey;
|
||||
import io.opentelemetry.api.common.Attributes;
|
||||
import io.opentelemetry.context.Context;
|
||||
import java.time.Instant;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
class DefaultLoggerTest {
|
||||
|
||||
private static final Logger logger = DefaultLogger.getInstance();
|
||||
|
||||
@Test
|
||||
void buildAndEmit() {
|
||||
assertThatCode(
|
||||
() ->
|
||||
logger
|
||||
.logRecordBuilder()
|
||||
.setEpoch(100, TimeUnit.SECONDS)
|
||||
.setEpoch(Instant.now())
|
||||
.setContext(Context.root())
|
||||
.setSeverity(Severity.DEBUG)
|
||||
.setSeverityText("debug")
|
||||
.setBody("body")
|
||||
.setAttribute(AttributeKey.stringKey("key1"), "value1")
|
||||
.setAllAttributes(Attributes.builder().put("key2", "value2").build())
|
||||
.emit())
|
||||
.doesNotThrowAnyException();
|
||||
}
|
||||
}
|
|
@ -12,13 +12,13 @@ import static org.assertj.core.api.Assertions.assertThat;
|
|||
|
||||
import io.github.netmikey.logunit.api.LogCapturer;
|
||||
import io.opentelemetry.api.common.Attributes;
|
||||
import io.opentelemetry.api.logs.Severity;
|
||||
import io.opentelemetry.api.trace.SpanContext;
|
||||
import io.opentelemetry.api.trace.TraceFlags;
|
||||
import io.opentelemetry.api.trace.TraceState;
|
||||
import io.opentelemetry.internal.testing.slf4j.SuppressLogger;
|
||||
import io.opentelemetry.sdk.common.InstrumentationScopeInfo;
|
||||
import io.opentelemetry.sdk.logs.data.LogData;
|
||||
import io.opentelemetry.sdk.logs.data.Severity;
|
||||
import io.opentelemetry.sdk.logs.export.LogExporter;
|
||||
import io.opentelemetry.sdk.resources.Resource;
|
||||
import io.opentelemetry.sdk.testing.logs.TestLogData;
|
||||
|
|
|
@ -11,13 +11,13 @@ import static java.util.Collections.singletonList;
|
|||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
import io.opentelemetry.api.common.Attributes;
|
||||
import io.opentelemetry.api.logs.Severity;
|
||||
import io.opentelemetry.api.trace.SpanContext;
|
||||
import io.opentelemetry.api.trace.TraceFlags;
|
||||
import io.opentelemetry.api.trace.TraceState;
|
||||
import io.opentelemetry.sdk.common.CompletableResultCode;
|
||||
import io.opentelemetry.sdk.common.InstrumentationScopeInfo;
|
||||
import io.opentelemetry.sdk.logs.data.LogData;
|
||||
import io.opentelemetry.sdk.logs.data.Severity;
|
||||
import io.opentelemetry.sdk.resources.Resource;
|
||||
import io.opentelemetry.sdk.testing.logs.TestLogData;
|
||||
import java.time.LocalDateTime;
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
|
||||
package io.opentelemetry.exporter.internal.otlp.logs;
|
||||
|
||||
import io.opentelemetry.api.logs.Severity;
|
||||
import io.opentelemetry.api.trace.SpanContext;
|
||||
import io.opentelemetry.api.trace.SpanId;
|
||||
import io.opentelemetry.api.trace.TraceFlags;
|
||||
|
@ -17,7 +18,6 @@ import io.opentelemetry.exporter.internal.otlp.KeyValueMarshaler;
|
|||
import io.opentelemetry.exporter.internal.otlp.StringAnyValueMarshaler;
|
||||
import io.opentelemetry.proto.logs.v1.internal.LogRecord;
|
||||
import io.opentelemetry.proto.logs.v1.internal.SeverityNumber;
|
||||
import io.opentelemetry.sdk.logs.data.Severity;
|
||||
import java.io.IOException;
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
|
|
|
@ -14,6 +14,7 @@ import com.google.protobuf.util.JsonFormat;
|
|||
import io.opentelemetry.api.common.AttributeKey;
|
||||
import io.opentelemetry.api.common.Attributes;
|
||||
import io.opentelemetry.api.internal.OtelEncodingUtils;
|
||||
import io.opentelemetry.api.logs.Severity;
|
||||
import io.opentelemetry.api.trace.SpanContext;
|
||||
import io.opentelemetry.api.trace.SpanId;
|
||||
import io.opentelemetry.api.trace.TraceFlags;
|
||||
|
@ -27,7 +28,6 @@ import io.opentelemetry.proto.logs.v1.LogRecord;
|
|||
import io.opentelemetry.proto.logs.v1.ResourceLogs;
|
||||
import io.opentelemetry.proto.logs.v1.ScopeLogs;
|
||||
import io.opentelemetry.sdk.common.InstrumentationScopeInfo;
|
||||
import io.opentelemetry.sdk.logs.data.Severity;
|
||||
import io.opentelemetry.sdk.resources.Resource;
|
||||
import io.opentelemetry.sdk.testing.logs.TestLogData;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
|
|
|
@ -22,6 +22,7 @@ import com.linecorp.armeria.testing.junit5.server.mock.MockWebServerExtension;
|
|||
import com.linecorp.armeria.testing.junit5.server.mock.RecordedRequest;
|
||||
import io.github.netmikey.logunit.api.LogCapturer;
|
||||
import io.opentelemetry.api.common.Attributes;
|
||||
import io.opentelemetry.api.logs.Severity;
|
||||
import io.opentelemetry.exporter.internal.okhttp.OkHttpExporter;
|
||||
import io.opentelemetry.exporter.internal.otlp.logs.ResourceLogsMarshaler;
|
||||
import io.opentelemetry.exporter.internal.retry.RetryPolicy;
|
||||
|
@ -33,7 +34,6 @@ import io.opentelemetry.proto.logs.v1.ResourceLogs;
|
|||
import io.opentelemetry.sdk.common.CompletableResultCode;
|
||||
import io.opentelemetry.sdk.common.InstrumentationScopeInfo;
|
||||
import io.opentelemetry.sdk.logs.data.LogData;
|
||||
import io.opentelemetry.sdk.logs.data.Severity;
|
||||
import io.opentelemetry.sdk.resources.Resource;
|
||||
import io.opentelemetry.sdk.testing.logs.TestLogData;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
|
|
|
@ -9,6 +9,7 @@ import static org.assertj.core.api.Assertions.assertThat;
|
|||
import static org.assertj.core.api.Assertions.assertThatCode;
|
||||
|
||||
import io.opentelemetry.api.common.Attributes;
|
||||
import io.opentelemetry.api.logs.Severity;
|
||||
import io.opentelemetry.exporter.internal.grpc.OkHttpGrpcExporter;
|
||||
import io.opentelemetry.exporter.internal.marshal.Marshaler;
|
||||
import io.opentelemetry.exporter.internal.otlp.logs.ResourceLogsMarshaler;
|
||||
|
@ -19,7 +20,6 @@ import io.opentelemetry.exporter.otlp.testing.internal.TelemetryExporterBuilder;
|
|||
import io.opentelemetry.proto.logs.v1.ResourceLogs;
|
||||
import io.opentelemetry.sdk.common.InstrumentationScopeInfo;
|
||||
import io.opentelemetry.sdk.logs.data.LogData;
|
||||
import io.opentelemetry.sdk.logs.data.Severity;
|
||||
import io.opentelemetry.sdk.resources.Resource;
|
||||
import io.opentelemetry.sdk.testing.logs.TestLogData;
|
||||
import java.io.Closeable;
|
||||
|
|
|
@ -10,6 +10,7 @@ import static org.assertj.core.api.Assertions.assertThatCode;
|
|||
|
||||
import io.grpc.inprocess.InProcessChannelBuilder;
|
||||
import io.opentelemetry.api.common.Attributes;
|
||||
import io.opentelemetry.api.logs.Severity;
|
||||
import io.opentelemetry.exporter.internal.grpc.UpstreamGrpcExporter;
|
||||
import io.opentelemetry.exporter.internal.marshal.Marshaler;
|
||||
import io.opentelemetry.exporter.internal.otlp.logs.ResourceLogsMarshaler;
|
||||
|
@ -21,7 +22,6 @@ import io.opentelemetry.exporter.otlp.testing.internal.TelemetryExporterBuilder;
|
|||
import io.opentelemetry.proto.logs.v1.ResourceLogs;
|
||||
import io.opentelemetry.sdk.common.InstrumentationScopeInfo;
|
||||
import io.opentelemetry.sdk.logs.data.LogData;
|
||||
import io.opentelemetry.sdk.logs.data.Severity;
|
||||
import io.opentelemetry.sdk.resources.Resource;
|
||||
import io.opentelemetry.sdk.testing.logs.TestLogData;
|
||||
import java.io.Closeable;
|
||||
|
|
|
@ -9,6 +9,7 @@ import static org.assertj.core.api.Assertions.assertThat;
|
|||
|
||||
import io.grpc.inprocess.InProcessChannelBuilder;
|
||||
import io.opentelemetry.api.common.Attributes;
|
||||
import io.opentelemetry.api.logs.Severity;
|
||||
import io.opentelemetry.exporter.internal.grpc.UpstreamGrpcExporter;
|
||||
import io.opentelemetry.exporter.internal.marshal.Marshaler;
|
||||
import io.opentelemetry.exporter.internal.otlp.logs.ResourceLogsMarshaler;
|
||||
|
@ -18,7 +19,6 @@ import io.opentelemetry.exporter.otlp.testing.internal.TelemetryExporterBuilder;
|
|||
import io.opentelemetry.proto.logs.v1.ResourceLogs;
|
||||
import io.opentelemetry.sdk.common.InstrumentationScopeInfo;
|
||||
import io.opentelemetry.sdk.logs.data.LogData;
|
||||
import io.opentelemetry.sdk.logs.data.Severity;
|
||||
import io.opentelemetry.sdk.resources.Resource;
|
||||
import io.opentelemetry.sdk.testing.logs.TestLogData;
|
||||
import java.io.Closeable;
|
||||
|
|
|
@ -9,6 +9,7 @@ import static org.assertj.core.api.Assertions.assertThat;
|
|||
|
||||
import io.grpc.inprocess.InProcessChannelBuilder;
|
||||
import io.opentelemetry.api.common.Attributes;
|
||||
import io.opentelemetry.api.logs.Severity;
|
||||
import io.opentelemetry.exporter.internal.grpc.UpstreamGrpcExporter;
|
||||
import io.opentelemetry.exporter.internal.marshal.Marshaler;
|
||||
import io.opentelemetry.exporter.internal.otlp.logs.ResourceLogsMarshaler;
|
||||
|
@ -18,7 +19,6 @@ import io.opentelemetry.exporter.otlp.testing.internal.TelemetryExporterBuilder;
|
|||
import io.opentelemetry.proto.logs.v1.ResourceLogs;
|
||||
import io.opentelemetry.sdk.common.InstrumentationScopeInfo;
|
||||
import io.opentelemetry.sdk.logs.data.LogData;
|
||||
import io.opentelemetry.sdk.logs.data.Severity;
|
||||
import io.opentelemetry.sdk.resources.Resource;
|
||||
import io.opentelemetry.sdk.testing.logs.TestLogData;
|
||||
import java.io.Closeable;
|
||||
|
|
|
@ -18,6 +18,8 @@ import com.linecorp.armeria.testing.junit5.server.SelfSignedCertificateExtension
|
|||
import com.linecorp.armeria.testing.junit5.server.ServerExtension;
|
||||
import io.opentelemetry.api.GlobalOpenTelemetry;
|
||||
import io.opentelemetry.api.common.Attributes;
|
||||
import io.opentelemetry.api.logs.Logger;
|
||||
import io.opentelemetry.api.logs.Severity;
|
||||
import io.opentelemetry.api.metrics.LongCounter;
|
||||
import io.opentelemetry.api.metrics.Meter;
|
||||
import io.opentelemetry.api.trace.Span;
|
||||
|
@ -53,9 +55,7 @@ import io.opentelemetry.proto.metrics.v1.Sum;
|
|||
import io.opentelemetry.proto.trace.v1.ResourceSpans;
|
||||
import io.opentelemetry.proto.trace.v1.ScopeSpans;
|
||||
import io.opentelemetry.proto.trace.v1.Span.Link;
|
||||
import io.opentelemetry.sdk.logs.Logger;
|
||||
import io.opentelemetry.sdk.logs.SdkLoggerProvider;
|
||||
import io.opentelemetry.sdk.logs.data.Severity;
|
||||
import io.opentelemetry.sdk.logs.export.LogExporter;
|
||||
import io.opentelemetry.sdk.logs.export.SimpleLogProcessor;
|
||||
import io.opentelemetry.sdk.metrics.SdkMeterProvider;
|
||||
|
|
|
@ -8,6 +8,7 @@ package io.opentelemetry.sdk.autoconfigure;
|
|||
import static java.util.Objects.requireNonNull;
|
||||
|
||||
import io.opentelemetry.api.GlobalOpenTelemetry;
|
||||
import io.opentelemetry.api.logs.GlobalLoggerProvider;
|
||||
import io.opentelemetry.context.propagation.ContextPropagators;
|
||||
import io.opentelemetry.context.propagation.TextMapPropagator;
|
||||
import io.opentelemetry.sdk.OpenTelemetrySdk;
|
||||
|
@ -388,6 +389,7 @@ public final class AutoConfiguredOpenTelemetrySdkBuilder implements AutoConfigur
|
|||
|
||||
if (setResultAsGlobal) {
|
||||
GlobalOpenTelemetry.set(openTelemetrySdk);
|
||||
GlobalLoggerProvider.set(openTelemetrySdk.getSdkLoggerProvider());
|
||||
logger.log(
|
||||
Level.FINE, "Global OpenTelemetry set to {0} by autoconfiguration", openTelemetrySdk);
|
||||
}
|
||||
|
|
|
@ -16,6 +16,7 @@ import static org.mockito.Mockito.when;
|
|||
|
||||
import io.opentelemetry.api.GlobalOpenTelemetry;
|
||||
import io.opentelemetry.api.OpenTelemetry;
|
||||
import io.opentelemetry.api.logs.GlobalLoggerProvider;
|
||||
import io.opentelemetry.api.trace.Span;
|
||||
import io.opentelemetry.api.trace.SpanId;
|
||||
import io.opentelemetry.api.trace.TraceId;
|
||||
|
@ -287,9 +288,10 @@ class AutoConfiguredOpenTelemetrySdkTest {
|
|||
void builder_setResultAsGlobalFalse() {
|
||||
GlobalOpenTelemetry.set(OpenTelemetry.noop());
|
||||
|
||||
OpenTelemetry openTelemetry = builder.setResultAsGlobal(false).build().getOpenTelemetrySdk();
|
||||
OpenTelemetrySdk openTelemetry = builder.setResultAsGlobal(false).build().getOpenTelemetrySdk();
|
||||
|
||||
assertThat(GlobalOpenTelemetry.get()).extracting("delegate").isNotSameAs(openTelemetry);
|
||||
assertThat(GlobalLoggerProvider.get()).isNotSameAs(openTelemetry.getSdkLoggerProvider());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -297,6 +299,7 @@ class AutoConfiguredOpenTelemetrySdkTest {
|
|||
OpenTelemetrySdk openTelemetry = builder.setResultAsGlobal(true).build().getOpenTelemetrySdk();
|
||||
|
||||
assertThat(GlobalOpenTelemetry.get()).extracting("delegate").isSameAs(openTelemetry);
|
||||
assertThat(GlobalLoggerProvider.get()).isSameAs(openTelemetry.getSdkLoggerProvider());
|
||||
}
|
||||
|
||||
private static Supplier<Map<String, String>> disableExportPropertySupplier() {
|
||||
|
|
|
@ -18,6 +18,8 @@ import io.grpc.stub.StreamObserver;
|
|||
import io.opentelemetry.api.GlobalOpenTelemetry;
|
||||
import io.opentelemetry.api.baggage.propagation.W3CBaggagePropagator;
|
||||
import io.opentelemetry.api.common.Attributes;
|
||||
import io.opentelemetry.api.logs.Logger;
|
||||
import io.opentelemetry.api.logs.Severity;
|
||||
import io.opentelemetry.api.metrics.Meter;
|
||||
import io.opentelemetry.api.trace.propagation.W3CTraceContextPropagator;
|
||||
import io.opentelemetry.extension.aws.AwsXrayPropagator;
|
||||
|
@ -39,8 +41,6 @@ import io.opentelemetry.proto.logs.v1.LogRecord;
|
|||
import io.opentelemetry.proto.metrics.v1.Metric;
|
||||
import io.opentelemetry.proto.metrics.v1.ResourceMetrics;
|
||||
import io.opentelemetry.proto.metrics.v1.ScopeMetrics;
|
||||
import io.opentelemetry.sdk.logs.Logger;
|
||||
import io.opentelemetry.sdk.logs.data.Severity;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
@ -155,7 +155,7 @@ class FullConfigTest {
|
|||
System.setProperty("otel.exporter.otlp.endpoint", endpoint);
|
||||
System.setProperty("otel.exporter.otlp.timeout", "10000");
|
||||
|
||||
// Initialize here so we get SdkLoggerProvider and shutdown when done
|
||||
// Initialize here so we can shutdown when done
|
||||
autoConfiguredOpenTelemetrySdk = AutoConfiguredOpenTelemetrySdk.initialize();
|
||||
}
|
||||
|
||||
|
|
|
@ -5,11 +5,11 @@
|
|||
|
||||
package io.opentelemetry.sdk.autoconfigure;
|
||||
|
||||
import io.opentelemetry.api.logs.Severity;
|
||||
import io.opentelemetry.sdk.autoconfigure.spi.AutoConfigurationCustomizer;
|
||||
import io.opentelemetry.sdk.autoconfigure.spi.AutoConfigurationCustomizerProvider;
|
||||
import io.opentelemetry.sdk.common.CompletableResultCode;
|
||||
import io.opentelemetry.sdk.logs.data.LogData;
|
||||
import io.opentelemetry.sdk.logs.data.Severity;
|
||||
import io.opentelemetry.sdk.logs.export.LogExporter;
|
||||
import java.util.Collection;
|
||||
import java.util.stream.Collectors;
|
||||
|
|
|
@ -10,10 +10,10 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.asser
|
|||
import io.opentelemetry.api.common.AttributeKey;
|
||||
import io.opentelemetry.api.common.Attributes;
|
||||
import io.opentelemetry.api.common.AttributesBuilder;
|
||||
import io.opentelemetry.api.logs.Severity;
|
||||
import io.opentelemetry.api.trace.SpanContext;
|
||||
import io.opentelemetry.sdk.common.InstrumentationScopeInfo;
|
||||
import io.opentelemetry.sdk.logs.data.LogData;
|
||||
import io.opentelemetry.sdk.logs.data.Severity;
|
||||
import io.opentelemetry.sdk.resources.Resource;
|
||||
import java.util.Map;
|
||||
import java.util.function.Consumer;
|
||||
|
|
|
@ -7,11 +7,11 @@ package io.opentelemetry.sdk.testing.logs;
|
|||
|
||||
import com.google.auto.value.AutoValue;
|
||||
import io.opentelemetry.api.common.Attributes;
|
||||
import io.opentelemetry.api.logs.Severity;
|
||||
import io.opentelemetry.api.trace.SpanContext;
|
||||
import io.opentelemetry.sdk.common.InstrumentationScopeInfo;
|
||||
import io.opentelemetry.sdk.logs.data.Body;
|
||||
import io.opentelemetry.sdk.logs.data.LogData;
|
||||
import io.opentelemetry.sdk.logs.data.Severity;
|
||||
import io.opentelemetry.sdk.resources.Resource;
|
||||
import java.time.Instant;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
|
|
@ -12,12 +12,12 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
|||
|
||||
import io.opentelemetry.api.common.AttributeKey;
|
||||
import io.opentelemetry.api.common.Attributes;
|
||||
import io.opentelemetry.api.logs.Severity;
|
||||
import io.opentelemetry.api.trace.SpanContext;
|
||||
import io.opentelemetry.api.trace.TraceFlags;
|
||||
import io.opentelemetry.api.trace.TraceState;
|
||||
import io.opentelemetry.sdk.common.InstrumentationScopeInfo;
|
||||
import io.opentelemetry.sdk.logs.data.LogData;
|
||||
import io.opentelemetry.sdk.logs.data.Severity;
|
||||
import io.opentelemetry.sdk.resources.Resource;
|
||||
import io.opentelemetry.sdk.testing.logs.TestLogData;
|
||||
import java.util.Arrays;
|
||||
|
|
|
@ -9,6 +9,7 @@ description = "OpenTelemetry Log SDK"
|
|||
otelJava.moduleName.set("io.opentelemetry.sdk.logs")
|
||||
|
||||
dependencies {
|
||||
api(project(":api:logs"))
|
||||
api(project(":sdk:common"))
|
||||
|
||||
testImplementation(project(":sdk:logs-testing"))
|
||||
|
|
|
@ -5,6 +5,8 @@
|
|||
|
||||
package io.opentelemetry.sdk.logs;
|
||||
|
||||
import io.opentelemetry.api.logs.LogRecordBuilder;
|
||||
import io.opentelemetry.api.logs.Logger;
|
||||
import io.opentelemetry.sdk.common.CompletableResultCode;
|
||||
import java.io.Closeable;
|
||||
import java.util.ArrayList;
|
||||
|
|
|
@ -7,11 +7,11 @@ package io.opentelemetry.sdk.logs;
|
|||
|
||||
import com.google.auto.value.AutoValue;
|
||||
import io.opentelemetry.api.common.Attributes;
|
||||
import io.opentelemetry.api.logs.Severity;
|
||||
import io.opentelemetry.api.trace.SpanContext;
|
||||
import io.opentelemetry.sdk.common.InstrumentationScopeInfo;
|
||||
import io.opentelemetry.sdk.logs.data.Body;
|
||||
import io.opentelemetry.sdk.logs.data.LogData;
|
||||
import io.opentelemetry.sdk.logs.data.Severity;
|
||||
import io.opentelemetry.sdk.resources.Resource;
|
||||
import javax.annotation.Nullable;
|
||||
import javax.annotation.concurrent.Immutable;
|
||||
|
|
|
@ -6,13 +6,14 @@
|
|||
package io.opentelemetry.sdk.logs;
|
||||
|
||||
import io.opentelemetry.api.common.AttributeKey;
|
||||
import io.opentelemetry.api.logs.LogRecordBuilder;
|
||||
import io.opentelemetry.api.logs.Severity;
|
||||
import io.opentelemetry.api.trace.Span;
|
||||
import io.opentelemetry.api.trace.SpanContext;
|
||||
import io.opentelemetry.context.Context;
|
||||
import io.opentelemetry.sdk.common.InstrumentationScopeInfo;
|
||||
import io.opentelemetry.sdk.internal.AttributesMap;
|
||||
import io.opentelemetry.sdk.logs.data.Body;
|
||||
import io.opentelemetry.sdk.logs.data.Severity;
|
||||
import java.time.Instant;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import javax.annotation.Nullable;
|
||||
|
|
|
@ -5,6 +5,8 @@
|
|||
|
||||
package io.opentelemetry.sdk.logs;
|
||||
|
||||
import io.opentelemetry.api.logs.LogRecordBuilder;
|
||||
import io.opentelemetry.api.logs.Logger;
|
||||
import io.opentelemetry.sdk.common.InstrumentationScopeInfo;
|
||||
|
||||
/** SDK implementation of {@link Logger}. */
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
|
||||
package io.opentelemetry.sdk.logs;
|
||||
|
||||
import io.opentelemetry.api.logs.LoggerBuilder;
|
||||
import io.opentelemetry.sdk.common.InstrumentationScopeInfo;
|
||||
import io.opentelemetry.sdk.common.InstrumentationScopeInfoBuilder;
|
||||
import io.opentelemetry.sdk.internal.ComponentRegistry;
|
||||
|
|
|
@ -5,6 +5,9 @@
|
|||
|
||||
package io.opentelemetry.sdk.logs;
|
||||
|
||||
import io.opentelemetry.api.logs.Logger;
|
||||
import io.opentelemetry.api.logs.LoggerBuilder;
|
||||
import io.opentelemetry.api.logs.LoggerProvider;
|
||||
import io.opentelemetry.sdk.common.Clock;
|
||||
import io.opentelemetry.sdk.common.CompletableResultCode;
|
||||
import io.opentelemetry.sdk.internal.ComponentRegistry;
|
||||
|
@ -15,8 +18,8 @@ import java.util.concurrent.TimeUnit;
|
|||
import java.util.function.Supplier;
|
||||
import java.util.logging.Level;
|
||||
|
||||
/** SDK registry for creating {@link Logger}s. */
|
||||
public final class SdkLoggerProvider implements Closeable {
|
||||
/** SDK implementation for {@link LoggerProvider}. */
|
||||
public final class SdkLoggerProvider implements LoggerProvider, Closeable {
|
||||
|
||||
static final String DEFAULT_LOGGER_NAME = "unknown";
|
||||
private static final java.util.logging.Logger LOGGER =
|
||||
|
@ -55,6 +58,7 @@ public final class SdkLoggerProvider implements Closeable {
|
|||
* the instrumentation library, package, or fully qualified class name. Must not be null.
|
||||
* @return a logger instance
|
||||
*/
|
||||
@Override
|
||||
public Logger get(String instrumentationScopeName) {
|
||||
return loggerBuilder(instrumentationScopeName).build();
|
||||
}
|
||||
|
@ -65,9 +69,10 @@ public final class SdkLoggerProvider implements Closeable {
|
|||
* @param instrumentationScopeName the name of the instrumentation scope
|
||||
* @return a logger builder instance
|
||||
*/
|
||||
@Override
|
||||
public LoggerBuilder loggerBuilder(String instrumentationScopeName) {
|
||||
if (isNoopLogProcessor) {
|
||||
return NoopLoggerBuilder.getInstance();
|
||||
return LoggerProvider.noop().loggerBuilder(instrumentationScopeName);
|
||||
}
|
||||
if (instrumentationScopeName == null || instrumentationScopeName.isEmpty()) {
|
||||
LOGGER.fine("Logger requested without instrumentation scope name.");
|
||||
|
|
|
@ -7,6 +7,8 @@ package io.opentelemetry.sdk.logs;
|
|||
|
||||
import static java.util.Objects.requireNonNull;
|
||||
|
||||
import io.opentelemetry.api.logs.LogRecordBuilder;
|
||||
import io.opentelemetry.api.logs.Logger;
|
||||
import io.opentelemetry.sdk.common.Clock;
|
||||
import io.opentelemetry.sdk.logs.data.LogData;
|
||||
import io.opentelemetry.sdk.resources.Resource;
|
||||
|
|
|
@ -8,12 +8,12 @@ package io.opentelemetry.sdk.logs;
|
|||
import io.opentelemetry.api.common.AttributeKey;
|
||||
import io.opentelemetry.api.common.Attributes;
|
||||
import io.opentelemetry.api.internal.GuardedBy;
|
||||
import io.opentelemetry.api.logs.Severity;
|
||||
import io.opentelemetry.api.trace.SpanContext;
|
||||
import io.opentelemetry.sdk.common.InstrumentationScopeInfo;
|
||||
import io.opentelemetry.sdk.internal.AttributesMap;
|
||||
import io.opentelemetry.sdk.logs.data.Body;
|
||||
import io.opentelemetry.sdk.logs.data.LogData;
|
||||
import io.opentelemetry.sdk.logs.data.Severity;
|
||||
import io.opentelemetry.sdk.resources.Resource;
|
||||
import javax.annotation.Nullable;
|
||||
import javax.annotation.concurrent.ThreadSafe;
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
package io.opentelemetry.sdk.logs.data;
|
||||
|
||||
import io.opentelemetry.api.common.Attributes;
|
||||
import io.opentelemetry.api.logs.Severity;
|
||||
import io.opentelemetry.api.trace.SpanContext;
|
||||
import io.opentelemetry.sdk.common.InstrumentationScopeInfo;
|
||||
import io.opentelemetry.sdk.logs.LogLimits;
|
||||
|
|
|
@ -1,34 +0,0 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.sdk.logs;
|
||||
|
||||
import io.opentelemetry.api.common.AttributeKey;
|
||||
import io.opentelemetry.context.Context;
|
||||
import io.opentelemetry.sdk.logs.data.Severity;
|
||||
import java.time.Instant;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
class NoopLoggerBuilderTest {
|
||||
|
||||
@Test
|
||||
void buildAndEmit() {
|
||||
NoopLoggerBuilder.getInstance()
|
||||
.setSchemaUrl("http://endpoint")
|
||||
.setInstrumentationVersion("1.0.0")
|
||||
.build()
|
||||
.logRecordBuilder()
|
||||
.setAttribute(AttributeKey.stringKey("key"), "value")
|
||||
.setEpoch(Instant.now())
|
||||
.setEpoch(100, TimeUnit.SECONDS)
|
||||
.setSeverity(Severity.DEBUG)
|
||||
.setSeverityText("debug")
|
||||
.setContext(Context.root())
|
||||
.setBody("body")
|
||||
.emit();
|
||||
;
|
||||
}
|
||||
}
|
|
@ -11,6 +11,7 @@ import static org.mockito.Mockito.when;
|
|||
|
||||
import io.opentelemetry.api.common.AttributeKey;
|
||||
import io.opentelemetry.api.common.Attributes;
|
||||
import io.opentelemetry.api.logs.Severity;
|
||||
import io.opentelemetry.api.trace.Span;
|
||||
import io.opentelemetry.api.trace.SpanContext;
|
||||
import io.opentelemetry.api.trace.TraceFlags;
|
||||
|
@ -19,7 +20,6 @@ import io.opentelemetry.context.Context;
|
|||
import io.opentelemetry.sdk.common.Clock;
|
||||
import io.opentelemetry.sdk.common.InstrumentationScopeInfo;
|
||||
import io.opentelemetry.sdk.logs.data.Body;
|
||||
import io.opentelemetry.sdk.logs.data.Severity;
|
||||
import io.opentelemetry.sdk.resources.Resource;
|
||||
import java.time.Instant;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
|
|
@ -14,6 +14,8 @@ import static org.mockito.Mockito.when;
|
|||
|
||||
import io.opentelemetry.api.common.AttributeKey;
|
||||
import io.opentelemetry.api.common.Attributes;
|
||||
import io.opentelemetry.api.logs.LoggerProvider;
|
||||
import io.opentelemetry.api.logs.Severity;
|
||||
import io.opentelemetry.api.trace.Span;
|
||||
import io.opentelemetry.api.trace.SpanContext;
|
||||
import io.opentelemetry.api.trace.TraceFlags;
|
||||
|
@ -24,7 +26,6 @@ import io.opentelemetry.sdk.common.Clock;
|
|||
import io.opentelemetry.sdk.common.CompletableResultCode;
|
||||
import io.opentelemetry.sdk.common.InstrumentationScopeInfo;
|
||||
import io.opentelemetry.sdk.logs.data.LogData;
|
||||
import io.opentelemetry.sdk.logs.data.Severity;
|
||||
import io.opentelemetry.sdk.resources.Resource;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
@ -208,7 +209,7 @@ class SdkLoggerProviderTest {
|
|||
@Test
|
||||
void loggerBuilder_NoProcessor_UsesNoop() {
|
||||
assertThat(SdkLoggerProvider.builder().build().loggerBuilder("test"))
|
||||
.isInstanceOf(NoopLoggerBuilder.class);
|
||||
.isSameAs(LoggerProvider.noop().loggerBuilder("test"));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
|
@ -21,6 +21,7 @@ import io.opentelemetry.api.common.AttributeKey;
|
|||
import io.opentelemetry.api.common.Attributes;
|
||||
import io.opentelemetry.api.common.AttributesBuilder;
|
||||
import io.opentelemetry.api.internal.StringUtils;
|
||||
import io.opentelemetry.api.logs.LogRecordBuilder;
|
||||
import io.opentelemetry.sdk.common.Clock;
|
||||
import io.opentelemetry.sdk.common.CompletableResultCode;
|
||||
import io.opentelemetry.sdk.common.InstrumentationScopeInfo;
|
||||
|
|
|
@ -5,10 +5,10 @@
|
|||
|
||||
package io.opentelemetry.sdk.logs.export;
|
||||
|
||||
import static io.opentelemetry.sdk.logs.data.Severity.DEBUG;
|
||||
import static io.opentelemetry.api.logs.Severity.DEBUG;
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
import io.opentelemetry.sdk.logs.Logger;
|
||||
import io.opentelemetry.api.logs.Logger;
|
||||
import io.opentelemetry.sdk.logs.SdkLoggerProvider;
|
||||
import io.opentelemetry.sdk.logs.data.LogData;
|
||||
import io.opentelemetry.sdk.testing.assertj.LogAssertions;
|
||||
|
|
|
@ -10,10 +10,10 @@ import static org.mockito.ArgumentMatchers.same;
|
|||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import io.opentelemetry.api.logs.Severity;
|
||||
import io.opentelemetry.internal.testing.slf4j.SuppressLogger;
|
||||
import io.opentelemetry.sdk.common.CompletableResultCode;
|
||||
import io.opentelemetry.sdk.logs.data.LogData;
|
||||
import io.opentelemetry.sdk.logs.data.Severity;
|
||||
import io.opentelemetry.sdk.testing.logs.TestLogData;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
|
|
|
@ -22,6 +22,7 @@ dependencyResolutionManagement {
|
|||
rootProject.name = "opentelemetry-java"
|
||||
include(":all")
|
||||
include(":api:all")
|
||||
include(":api:logs")
|
||||
include(":semconv")
|
||||
include(":bom")
|
||||
include(":bom-alpha")
|
||||
|
|
Loading…
Reference in New Issue