Skip to content

Commit d178642

Browse files
raphwSylvainJuge
andauthored
Introduce Tracer API for log capture. (#3515)
--------- Co-authored-by: Sylvain Juge <[email protected]>
1 parent 414860e commit d178642

File tree

24 files changed

+203
-97
lines changed

24 files changed

+203
-97
lines changed

apm-agent-core/src/main/java/co/elastic/apm/agent/impl/ElasticApmTracer.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@
2626
import co.elastic.apm.agent.configuration.CoreConfiguration;
2727
import co.elastic.apm.agent.configuration.MetricsConfiguration;
2828
import co.elastic.apm.agent.configuration.ServerlessConfiguration;
29+
import co.elastic.apm.agent.impl.metadata.ServiceFactory;
30+
import co.elastic.apm.agent.tracer.service.Service;
2931
import co.elastic.apm.agent.tracer.service.ServiceInfo;
3032
import co.elastic.apm.agent.configuration.SpanConfiguration;
3133
import co.elastic.apm.agent.context.ClosableLifecycleListenerAdapter;
@@ -973,4 +975,24 @@ public Set<String> getTraceHeaderNames() {
973975
public ServiceInfo autoDetectedServiceInfo() {
974976
return AutoDetectedServiceInfo.autoDetected();
975977
}
978+
979+
@Override
980+
public void reportLog(String log) {
981+
reporter.reportLog(log);
982+
}
983+
984+
@Override
985+
public void reportLog(byte[] log) {
986+
reporter.reportLog(log);
987+
}
988+
989+
@Nullable
990+
@Override
991+
public Service createService(String ephemeralId) {
992+
return new ServiceFactory().createService(
993+
coreConfiguration,
994+
ephemeralId,
995+
configurationRegistry.getConfig(ServerlessConfiguration.class).runsOnAwsLambda()
996+
);
997+
}
976998
}

apm-agent-core/src/main/java/co/elastic/apm/agent/impl/metadata/Node.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
/**
2424
* A representation of a service node, ie JVM
2525
*/
26-
public class Node {
26+
public class Node implements co.elastic.apm.agent.tracer.service.Node {
2727

2828
/**
2929
* (Optional)
@@ -37,6 +37,7 @@ public Node(@Nullable String name) {
3737
}
3838

3939
@Nullable
40+
@Override
4041
public String getName() {
4142
return name;
4243
}

apm-agent-core/src/main/java/co/elastic/apm/agent/impl/metadata/Service.java

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
/**
2626
* Information about the instrumented Service
2727
*/
28-
public class Service {
28+
public class Service implements co.elastic.apm.agent.tracer.service.Service {
2929

3030
/**
3131
* Name and version of the Elastic APM agent
@@ -127,10 +127,8 @@ public Service withLanguage(Language language) {
127127
return this;
128128
}
129129

130-
/**
131-
* Representation of a service node
132-
*/
133130
@Nullable
131+
@Override
134132
public Node getNode() {
135133
return node;
136134
}
@@ -143,11 +141,8 @@ public Service withNode(Node node) {
143141
return this;
144142
}
145143

146-
/**
147-
* Immutable name of the service emitting this event
148-
* (Required)
149-
*/
150144
@Nullable
145+
@Override
151146
public String getName() {
152147
return name;
153148
}
@@ -161,10 +156,8 @@ public Service withName(String name) {
161156
return this;
162157
}
163158

164-
/**
165-
* Environment name of the service, e.g. "production" or "staging"
166-
*/
167159
@Nullable
160+
@Override
168161
public String getEnvironment() {
169162
return environment;
170163
}
@@ -193,10 +186,8 @@ public Service withRuntime(RuntimeInfo runtime) {
193186
return this;
194187
}
195188

196-
/**
197-
* Version of the service emitting this event
198-
*/
199189
@Nullable
190+
@Override
200191
public String getVersion() {
201192
return version;
202193
}

apm-agent-plugins/apm-ecs-logging-plugin/pom.xml

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,6 @@
1616
</properties>
1717

1818
<dependencies>
19-
<!-- This plugin requires further refactoring to avoid agent dependencies. -->
20-
<dependency>
21-
<groupId>${project.groupId}</groupId>
22-
<artifactId>apm-agent-core</artifactId>
23-
<version>${project.version}</version>
24-
</dependency>
25-
2619
<!-- log4j 1.x -->
2720
<dependency>
2821
<groupId>co.elastic.logging</groupId>

apm-agent-plugins/apm-logging-plugin/apm-jul-plugin/src/main/java/co/elastic/apm/agent/jul/error/JulLoggerErrorCapturingInstrumentation.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
*/
1919
package co.elastic.apm.agent.jul.error;
2020

21-
import co.elastic.apm.agent.impl.Tracer;
2221
import co.elastic.apm.agent.loginstr.error.AbstractLoggerErrorCapturingInstrumentation;
2322
import co.elastic.apm.agent.loginstr.error.LoggerErrorHelper;
2423
import net.bytebuddy.asm.Advice;

apm-agent-plugins/apm-logging-plugin/apm-jul-plugin/src/main/java/co/elastic/apm/agent/jul/reformatting/AbstractJulEcsReformattingHelper.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,10 @@
2121
import co.elastic.apm.agent.jul.sending.JulLogSenderHandler;
2222
import co.elastic.apm.agent.loginstr.correlation.CorrelationIdMapAdapter;
2323
import co.elastic.apm.agent.loginstr.reformatting.AbstractEcsReformattingHelper;
24-
import co.elastic.apm.agent.report.Reporter;
2524
import co.elastic.apm.agent.sdk.logging.Logger;
2625
import co.elastic.apm.agent.sdk.logging.LoggerFactory;
2726
import co.elastic.apm.agent.sdk.internal.util.LoggerUtils;
27+
import co.elastic.apm.agent.tracer.Tracer;
2828
import co.elastic.logging.AdditionalField;
2929
import co.elastic.logging.jul.EcsFormatter;
3030

@@ -151,8 +151,8 @@ private static FileHandler doCreateFileHandler(String pattern, int maxLogFileSiz
151151
protected abstract boolean isFileHandler(Handler originalHandler);
152152

153153
@Override
154-
protected T createAndStartLogSendingAppender(Reporter reporter, Formatter formatter) {
155-
return (T) new JulLogSenderHandler(reporter, formatter);
154+
protected T createAndStartLogSendingAppender(Tracer tracer, Formatter formatter) {
155+
return (T) new JulLogSenderHandler(tracer, formatter);
156156
}
157157

158158
@Override

apm-agent-plugins/apm-logging-plugin/apm-jul-plugin/src/main/java/co/elastic/apm/agent/jul/sending/JulLogSenderHandler.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,24 +18,24 @@
1818
*/
1919
package co.elastic.apm.agent.jul.sending;
2020

21-
import co.elastic.apm.agent.report.Reporter;
21+
import co.elastic.apm.agent.tracer.Tracer;
2222

2323
import java.util.logging.Formatter;
2424
import java.util.logging.Handler;
2525
import java.util.logging.LogRecord;
2626

2727
public class JulLogSenderHandler extends Handler {
28-
private final Reporter reporter;
28+
private final Tracer tracer;
2929
private final Formatter formatter;
3030

31-
public JulLogSenderHandler(Reporter reporter, Formatter formatter) {
32-
this.reporter = reporter;
31+
public JulLogSenderHandler(Tracer tracer, Formatter formatter) {
32+
this.tracer = tracer;
3333
this.formatter = formatter;
3434
}
3535

3636
@Override
3737
public void publish(LogRecord record) {
38-
reporter.reportLog(formatter.format(record));
38+
tracer.reportLog(formatter.format(record));
3939
}
4040

4141
@Override

apm-agent-plugins/apm-logging-plugin/apm-log4j1-plugin/src/main/java/co/elastic/apm/agent/log4j1/reformatting/Log4J1EcsReformattingHelper.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@
2222
import co.elastic.apm.agent.loginstr.reformatting.AbstractEcsReformattingHelper;
2323
import co.elastic.apm.agent.loginstr.reformatting.Utils;
2424

25-
import co.elastic.apm.agent.report.Reporter;
2625
import co.elastic.apm.agent.sdk.logging.Logger;
2726
import co.elastic.apm.agent.sdk.logging.LoggerFactory;
27+
import co.elastic.apm.agent.tracer.Tracer;
2828
import co.elastic.logging.log4j.EcsLayout;
2929
import org.apache.log4j.Appender;
3030
import org.apache.log4j.FileAppender;
@@ -112,8 +112,8 @@ protected void closeShadeAppender(WriterAppender shadeAppender) {
112112
}
113113

114114
@Override
115-
protected Appender createAndStartLogSendingAppender(Reporter reporter, Layout formatter) {
116-
return new LogSenderAppender(reporter, formatter);
115+
protected Appender createAndStartLogSendingAppender(Tracer tracer, Layout formatter) {
116+
return new LogSenderAppender(tracer, formatter);
117117
}
118118

119119
@Override

apm-agent-plugins/apm-logging-plugin/apm-log4j1-plugin/src/main/java/co/elastic/apm/agent/log4j1/sending/LogSenderAppender.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,17 +18,17 @@
1818
*/
1919
package co.elastic.apm.agent.log4j1.sending;
2020

21-
import co.elastic.apm.agent.report.Reporter;
21+
import co.elastic.apm.agent.tracer.Tracer;
2222
import org.apache.log4j.AppenderSkeleton;
2323
import org.apache.log4j.Layout;
2424
import org.apache.log4j.spi.LoggingEvent;
2525

2626
public class LogSenderAppender extends AppenderSkeleton {
27-
private final Reporter reporter;
27+
private final Tracer tracer;
2828
private final Layout formatter;
2929

30-
public LogSenderAppender(Reporter reporter, Layout formatter) {
31-
this.reporter = reporter;
30+
public LogSenderAppender(Tracer tracer, Layout formatter) {
31+
this.tracer = tracer;
3232
this.formatter = formatter;
3333
}
3434

@@ -39,7 +39,7 @@ public synchronized void doAppend(LoggingEvent event) {
3939

4040
@Override
4141
protected void append(LoggingEvent event) {
42-
reporter.reportLog(formatter.format(event));
42+
tracer.reportLog(formatter.format(event));
4343
}
4444

4545
@Override

apm-agent-plugins/apm-logging-plugin/apm-log4j2-plugin/src/main/java/co/elastic/apm/agent/log4j2/correlation/Log4j2_7PlusLogCorrelationHelper.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
package co.elastic.apm.agent.log4j2.correlation;
2020

2121
import co.elastic.apm.agent.tracer.GlobalTracer;
22-
import co.elastic.apm.agent.impl.error.ErrorCapture;
2322
import co.elastic.apm.agent.loginstr.correlation.AbstractLogCorrelationHelper;
2423
import co.elastic.apm.agent.loginstr.correlation.CorrelationIdMapAdapter;
2524
import co.elastic.apm.agent.tracer.Tracer;

0 commit comments

Comments
 (0)