Skip to content

Commit f575be1

Browse files
committed
Promote ExtendedLogger#isEnabled to stable API
1 parent 29aa2f1 commit f575be1

8 files changed

Lines changed: 52 additions & 64 deletions

File tree

api/all/src/main/java/io/opentelemetry/api/logs/DefaultLogger.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,11 @@ static Logger getInstance() {
2323
return INSTANCE;
2424
}
2525

26+
@Override
27+
public boolean isEnabled(Severity severity, Context context) {
28+
return false;
29+
}
30+
2631
@Override
2732
public LogRecordBuilder logRecordBuilder() {
2833
return NOOP_LOG_RECORD_BUILDER;

api/all/src/main/java/io/opentelemetry/api/logs/Logger.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
package io.opentelemetry.api.logs;
77

8+
import io.opentelemetry.context.Context;
89
import javax.annotation.concurrent.ThreadSafe;
910

1011
/**
@@ -22,6 +23,23 @@
2223
@ThreadSafe
2324
public interface Logger {
2425

26+
/**
27+
* Returns {@code true} if the logger is enabled for the given {@code context} and {@code
28+
* severity}.
29+
*
30+
* <p>This allows callers to avoid unnecessary compute when nothing is consuming the data. Because
31+
* the response is subject to change over the application, callers should call this before each
32+
* call to {@link #logRecordBuilder()}.
33+
*/
34+
default boolean isEnabled(Severity severity, Context context) {
35+
return true;
36+
}
37+
38+
/** Overload of {@link #isEnabled(Severity, Context)} assuming {@link Context#current()}. */
39+
default boolean isEnabled(Severity severity) {
40+
return isEnabled(severity, Context.current());
41+
}
42+
2543
/**
2644
* Return a {@link LogRecordBuilder} to emit a log record.
2745
*

api/incubator/src/main/java/io/opentelemetry/api/incubator/logs/ExtendedLogger.java

Lines changed: 0 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -6,41 +6,10 @@
66
package io.opentelemetry.api.incubator.logs;
77

88
import io.opentelemetry.api.logs.Logger;
9-
import io.opentelemetry.api.logs.Severity;
10-
import io.opentelemetry.context.Context;
119

1210
/** Extended {@link Logger} with experimental APIs. */
1311
public interface ExtendedLogger extends Logger {
1412

15-
/**
16-
* Returns {@code true} if the logger is enabled for the given {@code context} and {@code
17-
* severity}.
18-
*
19-
* <p>This allows callers to avoid unnecessary compute when nothing is consuming the data. Because
20-
* the response is subject to change over the application, callers should call this before each
21-
* call to {@link #logRecordBuilder()}.
22-
*/
23-
default boolean isEnabled(Severity severity, Context context) {
24-
return true;
25-
}
26-
27-
/** Overload of {@link #isEnabled(Severity, Context)} assuming {@link Context#current()}. */
28-
default boolean isEnabled(Severity severity) {
29-
return isEnabled(severity, Context.current());
30-
}
31-
32-
/**
33-
* Overload of {@link #isEnabled(Severity, Context)} assuming {@link
34-
* Severity#UNDEFINED_SEVERITY_NUMBER} and {@link Context#current()}.
35-
*
36-
* @deprecated for removal after 1.55.0. Use {@link #isEnabled(Severity, Context)} or {@link
37-
* #isEnabled(Severity)} instead.
38-
*/
39-
@Deprecated
40-
default boolean isEnabled() {
41-
return isEnabled(Severity.UNDEFINED_SEVERITY_NUMBER);
42-
}
43-
4413
@Override
4514
ExtendedLogRecordBuilder logRecordBuilder();
4615
}

api/incubator/src/test/java/io/opentelemetry/api/incubator/logs/ExtendedDefaultLoggerTest.java

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -28,18 +28,13 @@ protected Logger getLogger() {
2828
}
2929

3030
@Test
31-
@SuppressWarnings("deprecation") // testing deprecated code
3231
void incubatingApiIsLoaded() {
3332
Logger logger = LoggerProvider.noop().get("test");
33+
assertThat(logger.isEnabled(Severity.ERROR, Context.current())).isFalse();
34+
assertThat(logger.isEnabled(Severity.ERROR)).isFalse();
3435

35-
assertThat(logger)
36-
.isInstanceOfSatisfying(
37-
ExtendedLogger.class,
38-
extendedLogger -> {
39-
assertThat(extendedLogger.isEnabled(Severity.ERROR, Context.current())).isFalse();
40-
assertThat(extendedLogger.isEnabled(Severity.ERROR)).isFalse();
41-
assertThat(extendedLogger.isEnabled()).isFalse();
42-
});
36+
assertThat(logger).isInstanceOf(ExtendedLogger.class);
37+
assertThat(logger.isEnabled(Severity.ERROR, Context.current())).isFalse();
4338
ExtendedLogRecordBuilder builder = (ExtendedLogRecordBuilder) logger.logRecordBuilder();
4439
assertThat(builder).isInstanceOf(ExtendedLogRecordBuilder.class);
4540
assertThat(builder.setBody(Value.of(0))).isSameAs(builder);

api/testing-internal/src/main/java/io/opentelemetry/api/testing/internal/AbstractDefaultLoggerTest.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,11 @@ void noopLoggerProvider_doesNotThrow() {
4545
.doesNotThrowAnyException();
4646
}
4747

48+
@Test
49+
void defaultIsEnabled() {
50+
assertThat(getLogger().isEnabled(Severity.ERROR, Context.root())).isFalse();
51+
}
52+
4853
@Test
4954
void buildAndEmit() {
5055
assertThatCode(
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
11
Comparing source compatibility of opentelemetry-api-1.61.0-SNAPSHOT.jar against opentelemetry-api-1.60.1.jar
2+
*** MODIFIED INTERFACE: PUBLIC ABSTRACT io.opentelemetry.api.logs.Logger (not serializable)
3+
=== CLASS FILE FORMAT VERSION: 52.0 <- 52.0
4+
+++ NEW METHOD: PUBLIC(+) boolean isEnabled(io.opentelemetry.api.logs.Severity, io.opentelemetry.context.Context)
5+
+++ NEW METHOD: PUBLIC(+) boolean isEnabled(io.opentelemetry.api.logs.Severity)
26
*** MODIFIED INTERFACE: PUBLIC ABSTRACT io.opentelemetry.api.trace.Tracer (not serializable)
37
=== CLASS FILE FORMAT VERSION: 52.0 <- 52.0
48
+++ NEW METHOD: PUBLIC(+) boolean isEnabled()

sdk/logs/src/main/java/io/opentelemetry/sdk/logs/ExtendedSdkLogger.java

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@
77

88
import io.opentelemetry.api.incubator.logs.ExtendedLogRecordBuilder;
99
import io.opentelemetry.api.incubator.logs.ExtendedLogger;
10-
import io.opentelemetry.api.logs.Severity;
11-
import io.opentelemetry.context.Context;
1210
import io.opentelemetry.sdk.common.InstrumentationScopeInfo;
1311
import io.opentelemetry.sdk.logs.internal.LoggerConfig;
1412

@@ -22,12 +20,6 @@ final class ExtendedSdkLogger extends SdkLogger implements ExtendedLogger {
2220
super(loggerSharedState, instrumentationScopeInfo, loggerConfig);
2321
}
2422

25-
@Override
26-
@SuppressWarnings("RedundantOverride")
27-
public boolean isEnabled(Severity severity, Context context) {
28-
return super.isEnabled(severity, context);
29-
}
30-
3123
@Override
3224
public ExtendedLogRecordBuilder logRecordBuilder() {
3325
return (ExtendedLogRecordBuilder) super.logRecordBuilder();

sdk/logs/src/main/java/io/opentelemetry/sdk/logs/SdkLogger.java

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -60,22 +60,6 @@ static SdkLogger create(
6060
}
6161

6262
@Override
63-
public LogRecordBuilder logRecordBuilder() {
64-
if (loggerEnabled) {
65-
return INCUBATOR_AVAILABLE
66-
? IncubatingUtil.createExtendedLogRecordBuilder(
67-
loggerSharedState, instrumentationScopeInfo, this)
68-
: new SdkLogRecordBuilder(loggerSharedState, instrumentationScopeInfo, this);
69-
}
70-
return NOOP_LOGGER.logRecordBuilder();
71-
}
72-
73-
// VisibleForTesting
74-
InstrumentationScopeInfo getInstrumentationScopeInfo() {
75-
return instrumentationScopeInfo;
76-
}
77-
78-
// Visible for testing
7963
public boolean isEnabled(Severity severity, Context context) {
8064
if (!loggerEnabled) {
8165
return false;
@@ -96,6 +80,22 @@ public boolean isEnabled(Severity severity, Context context) {
9680
return true;
9781
}
9882

83+
@Override
84+
public LogRecordBuilder logRecordBuilder() {
85+
if (loggerEnabled) {
86+
return INCUBATOR_AVAILABLE
87+
? IncubatingUtil.createExtendedLogRecordBuilder(
88+
loggerSharedState, instrumentationScopeInfo, this)
89+
: new SdkLogRecordBuilder(loggerSharedState, instrumentationScopeInfo, this);
90+
}
91+
return NOOP_LOGGER.logRecordBuilder();
92+
}
93+
94+
// VisibleForTesting
95+
InstrumentationScopeInfo getInstrumentationScopeInfo() {
96+
return instrumentationScopeInfo;
97+
}
98+
9999
void updateLoggerConfig(LoggerConfig loggerConfig) {
100100
loggerEnabled = loggerConfig.isEnabled();
101101
minimumSeverity = loggerConfig.getMinimumSeverity();

0 commit comments

Comments
 (0)