Add logging timestamp for log4j1 appender instrument (#9309)

This commit is contained in:
Poom 2023-08-26 06:43:28 +07:00 committed by GitHub
parent c2a3ba02d3
commit 2ebf4134f9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 11 additions and 0 deletions

View File

@ -19,6 +19,7 @@ import io.opentelemetry.javaagent.bootstrap.internal.InstrumentationConfig;
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes; import io.opentelemetry.semconv.trace.attributes.SemanticAttributes;
import java.io.PrintWriter; import java.io.PrintWriter;
import java.io.StringWriter; import java.io.StringWriter;
import java.time.Instant;
import java.util.Hashtable; import java.util.Hashtable;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -107,6 +108,7 @@ public final class LogEventMapper {
// span context // span context
builder.setContext(Context.current()); builder.setContext(Context.current());
builder.setTimestamp(Instant.now());
builder.emit(); builder.emit();
} }

View File

@ -8,6 +8,7 @@ package io.opentelemetry.instrumentation.log4j.appender.v1_2;
import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat;
import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo;
import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies;
import static java.util.concurrent.TimeUnit.MILLISECONDS;
import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.common.AttributeKey;
import io.opentelemetry.api.logs.Severity; import io.opentelemetry.api.logs.Severity;
@ -17,6 +18,7 @@ import io.opentelemetry.sdk.common.InstrumentationScopeInfo;
import io.opentelemetry.sdk.logs.data.LogRecordData; import io.opentelemetry.sdk.logs.data.LogRecordData;
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes; import io.opentelemetry.semconv.trace.attributes.SemanticAttributes;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.time.Instant;
import java.util.stream.Stream; import java.util.stream.Stream;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
import org.apache.log4j.MDC; import org.apache.log4j.MDC;
@ -79,6 +81,8 @@ class Log4j1Test {
String expectedSeverityText) String expectedSeverityText)
throws InterruptedException { throws InterruptedException {
Instant start = Instant.now();
// when // when
if (withParent) { if (withParent) {
testing.runWithSpan( testing.runWithSpan(
@ -99,6 +103,11 @@ class Log4j1Test {
.hasInstrumentationScope(InstrumentationScopeInfo.builder(expectedLoggerName).build()) .hasInstrumentationScope(InstrumentationScopeInfo.builder(expectedLoggerName).build())
.hasSeverity(expectedSeverity) .hasSeverity(expectedSeverity)
.hasSeverityText(expectedSeverityText); .hasSeverityText(expectedSeverityText);
assertThat(log.getTimestampEpochNanos())
.isGreaterThanOrEqualTo(MILLISECONDS.toNanos(start.toEpochMilli()))
.isLessThanOrEqualTo(MILLISECONDS.toNanos(Instant.now().toEpochMilli()));
if (logException) { if (logException) {
assertThat(log) assertThat(log)
.hasAttributesSatisfyingExactly( .hasAttributesSatisfyingExactly(