Skip to content

Commit b561aa5

Browse files
authored
Review fixes for log4j-appender-2.17:library (open-telemetry#18191)
Co-authored-by: otelbot <197425009+otelbot@users.noreply.github.com>
1 parent fd97a7a commit b561aa5

3 files changed

Lines changed: 32 additions & 20 deletions

File tree

instrumentation/log4j/log4j-appender-2.17/library/src/main/java/io/opentelemetry/instrumentation/log4j/appender/v2_17/LogEventToReplay.java

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -28,16 +28,16 @@ class LogEventToReplay implements LogEvent {
2828
// Log4j 2 reuses LogEvent object, so we make a copy of all the fields that are used during export
2929
// in order to be able to replay the log event later.
3030

31-
private final String loggerName;
31+
@Nullable private final String loggerName;
3232
private final Message message;
3333
private final Level level;
3434
private final Instant instant;
35-
private final Throwable thrown;
36-
private final Marker marker;
35+
@Nullable private final Throwable thrown;
36+
@Nullable private final Marker marker;
3737
private final ReadOnlyStringMap contextData;
3838
private final String threadName;
3939
private final long threadId;
40-
private final StackTraceElement source;
40+
@Nullable private final StackTraceElement source;
4141

4242
LogEventToReplay(LogEvent logEvent, boolean captureCodeAttributes) {
4343
this.loggerName = logEvent.getLoggerName();
@@ -71,7 +71,7 @@ class LogEventToReplay implements LogEvent {
7171

7272
@Override
7373
public LogEvent toImmutable() {
74-
return null;
74+
return this;
7575
}
7676

7777
@SuppressWarnings("deprecation") // Override
@@ -91,6 +91,7 @@ public ThreadContext.ContextStack getContextStack() {
9191
return null;
9292
}
9393

94+
@Nullable
9495
@Override
9596
public String getLoggerFqcn() {
9697
return null;
@@ -101,11 +102,13 @@ public Level getLevel() {
101102
return level;
102103
}
103104

105+
@Nullable
104106
@Override
105107
public String getLoggerName() {
106108
return loggerName;
107109
}
108110

111+
@Nullable
109112
@Override
110113
public Marker getMarker() {
111114
return marker;
@@ -118,14 +121,15 @@ public Message getMessage() {
118121

119122
@Override
120123
public long getTimeMillis() {
121-
return 0;
124+
return instant.getEpochMillisecond();
122125
}
123126

124127
@Override
125128
public Instant getInstant() {
126129
return instant;
127130
}
128131

132+
@Nullable
129133
@Override
130134
public StackTraceElement getSource() {
131135
return source;
@@ -146,11 +150,13 @@ public int getThreadPriority() {
146150
return 0;
147151
}
148152

153+
@Nullable
149154
@Override
150155
public Throwable getThrown() {
151156
return thrown;
152157
}
153158

159+
@Nullable
154160
@Override
155161
public ThrowableProxy getThrownProxy() {
156162
return null;
@@ -182,13 +188,14 @@ private static class MessageCopy implements Message {
182188
private static final long serialVersionUID = 1L;
183189
private final String formattedMessage;
184190
private final String format;
185-
private final Object[] parameters;
186-
private final Throwable throwable;
191+
@Nullable private final Object[] parameters;
192+
@Nullable private final Throwable throwable;
187193

188194
MessageCopy(Message message) {
189195
this.formattedMessage = message.getFormattedMessage();
190196
this.format = message.getFormat();
191-
this.parameters = message.getParameters();
197+
Object[] parameters = message.getParameters();
198+
this.parameters = parameters == null ? null : parameters.clone();
192199
this.throwable = message.getThrowable();
193200
}
194201

@@ -202,11 +209,13 @@ public String getFormat() {
202209
return format;
203210
}
204211

212+
@Nullable
205213
@Override
206214
public Object[] getParameters() {
207215
return parameters;
208216
}
209217

218+
@Nullable
210219
@Override
211220
public Throwable getThrowable() {
212221
return throwable;

instrumentation/log4j/log4j-appender-2.17/library/src/main/java/io/opentelemetry/instrumentation/log4j/appender/v2_17/OpenTelemetryAppender.java

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ public class OpenTelemetryAppender extends AbstractAppender {
6363
static final String PLUGIN_NAME = "OpenTelemetry";
6464

6565
private final LogEventMapper<ReadOnlyStringMap> mapper;
66-
private volatile OpenTelemetry openTelemetry;
66+
@Nullable private volatile OpenTelemetry openTelemetry;
6767

6868
private final BlockingQueue<LogEventToReplay> eventsToReplay;
6969
private final AtomicBoolean replayLimitWarningLogged = new AtomicBoolean();
@@ -112,7 +112,7 @@ public static class Builder<B extends Builder<B>> extends AbstractAppender.Build
112112
@PluginBuilderAttribute private boolean captureCodeAttributes;
113113
@PluginBuilderAttribute private boolean captureMapMessageAttributes;
114114
@PluginBuilderAttribute private boolean captureMarkerAttribute;
115-
@PluginBuilderAttribute private String captureContextDataAttributes;
115+
@Nullable @PluginBuilderAttribute private String captureContextDataAttributes;
116116
@PluginBuilderAttribute private boolean captureEventName;
117117
@PluginBuilderAttribute private int numLogsCapturedBeforeOtelInstall;
118118

@@ -187,10 +187,10 @@ public B setCaptureEventName(boolean captureEventName) {
187187
}
188188

189189
/**
190-
* Log telemetry is emitted after the initialization of the OpenTelemetry Logback appender with
191-
* an {@link OpenTelemetry} object. This setting allows you to modify the size of the cache used
192-
* to replay the logs that were emitted prior to setting the OpenTelemetry instance into the
193-
* Logback appender.
190+
* Log telemetry is emitted after the initialization of the OpenTelemetry Log4j appender with an
191+
* {@link OpenTelemetry} object. This setting allows you to modify the size of the cache used to
192+
* replay the logs that were emitted prior to setting the OpenTelemetry instance into the
193+
* OpenTelemetry Log4j appender.
194194
*/
195195
@CanIgnoreReturnValue
196196
public B setNumLogsCapturedBeforeOtelInstall(int numLogsCapturedBeforeOtelInstall) {
@@ -239,15 +239,15 @@ private OpenTelemetryAppender(
239239
boolean captureCodeAttributes,
240240
boolean captureMapMessageAttributes,
241241
boolean captureMarkerAttribute,
242-
String captureContextDataAttributes,
242+
@Nullable String captureContextDataAttributes,
243243
boolean captureEventName,
244244
int numLogsCapturedBeforeOtelInstall,
245-
OpenTelemetry openTelemetry) {
245+
@Nullable OpenTelemetry openTelemetry) {
246246
super(name, filter, layout, ignoreExceptions, properties);
247247

248-
DeclarativeConfigProperties comonConfig =
248+
DeclarativeConfigProperties commonConfig =
249249
DeclarativeConfigUtil.getInstrumentationConfig(openTelemetry, "common");
250-
boolean v3Preview = comonConfig.getBoolean("v3_preview", false);
250+
boolean v3Preview = commonConfig.getBoolean("v3_preview", false);
251251

252252
this.mapper =
253253
new LogEventMapper<>(
@@ -268,7 +268,7 @@ private OpenTelemetryAppender(
268268
}
269269
}
270270

271-
private static List<String> splitAndFilterBlanksAndNulls(String value) {
271+
private static List<String> splitAndFilterBlanksAndNulls(@Nullable String value) {
272272
if (value == null) {
273273
return emptyList();
274274
}

instrumentation/log4j/log4j-appender-2.17/metadata.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,9 @@ configurations:
3636
Controls which MDC attributes to capture. Use "*" to capture all MDC attributes or provide a
3737
comma-separated list of specific keys.
3838
type: list
39+
examples:
40+
- "*"
41+
- "key1,key2"
3942
default: ''
4043
examples:
4144
- "custom-mdc-key"

0 commit comments

Comments
 (0)