Support `-Dlog4j2.contextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextSelector` in gRPC log report. (#182)
Co-authored-by: andotorg <xieyan9@tal.com>
This commit is contained in:
parent
42377bb274
commit
5bc1d1d1f1
|
|
@ -17,6 +17,7 @@ Release Notes.
|
|||
* Enhance Apache ShenYu (incubating) plugin: support trace `grpc`,`sofarpc`,`motan`,`tars` rpc proxy.
|
||||
* Add primary endpoint name to log events.
|
||||
* Fix Span not finished in gateway plugin when the gateway request timeout.
|
||||
* Support `-Dlog4j2.contextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextSelector` in gRPC log report.
|
||||
|
||||
#### Documentation
|
||||
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@ import java.util.Objects;
|
|||
import java.util.Optional;
|
||||
import org.apache.logging.log4j.core.LogEvent;
|
||||
import org.apache.logging.log4j.core.appender.AbstractAppender;
|
||||
import org.apache.logging.log4j.core.async.RingBufferLogEvent;
|
||||
import org.apache.skywalking.apm.agent.core.boot.ServiceManager;
|
||||
import org.apache.skywalking.apm.agent.core.conf.Config;
|
||||
import org.apache.skywalking.apm.agent.core.context.ContextManager;
|
||||
|
|
@ -37,6 +38,7 @@ import org.apache.skywalking.apm.network.logging.v3.LogDataBody;
|
|||
import org.apache.skywalking.apm.network.logging.v3.LogTags;
|
||||
import org.apache.skywalking.apm.network.logging.v3.TextLog;
|
||||
import org.apache.skywalking.apm.network.logging.v3.TraceContext;
|
||||
import org.apache.skywalking.apm.toolkit.logging.common.log.SkyWalkingContext;
|
||||
import org.apache.skywalking.apm.toolkit.logging.common.log.ToolkitConfig;
|
||||
|
||||
public class GRPCLogAppenderInterceptor implements InstanceMethodsAroundInterceptor {
|
||||
|
|
@ -114,12 +116,22 @@ public class GRPCLogAppenderInterceptor implements InstanceMethodsAroundIntercep
|
|||
builder.setEndpoint(primaryEndpointName);
|
||||
}
|
||||
|
||||
return -1 == ContextManager.getSpanId() ? builder.build()
|
||||
: builder.setTraceContext(TraceContext.newBuilder()
|
||||
.setTraceId(ContextManager.getGlobalTraceId())
|
||||
.setSpanId(ContextManager.getSpanId())
|
||||
.setTraceSegmentId(ContextManager.getSegmentId())
|
||||
.build()).build();
|
||||
if (event instanceof RingBufferLogEvent) {
|
||||
EnhancedInstance instance = (EnhancedInstance) event;
|
||||
SkyWalkingContext context = (SkyWalkingContext) instance.getSkyWalkingDynamicField();
|
||||
return builder.setTraceContext(TraceContext.newBuilder()
|
||||
.setTraceId(context.getTraceId())
|
||||
.setSpanId(context.getSpanId())
|
||||
.setTraceSegmentId(context.getTraceSegmentId())
|
||||
.build()).build();
|
||||
} else {
|
||||
return -1 == ContextManager.getSpanId() ? builder.build()
|
||||
: builder.setTraceContext(TraceContext.newBuilder()
|
||||
.setTraceId(ContextManager.getGlobalTraceId())
|
||||
.setSpanId(ContextManager.getSpanId())
|
||||
.setTraceSegmentId(ContextManager.getSegmentId())
|
||||
.build()).build();
|
||||
}
|
||||
}
|
||||
|
||||
private String transformLogText(final AbstractAppender appender, final LogEvent event) {
|
||||
|
|
|
|||
|
|
@ -38,6 +38,14 @@ public class SkyWalkingContext {
|
|||
return traceId;
|
||||
}
|
||||
|
||||
public String getTraceSegmentId() {
|
||||
return traceSegmentId;
|
||||
}
|
||||
|
||||
public int getSpanId() {
|
||||
return spanId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
if (-1 == spanId) {
|
||||
|
|
|
|||
|
|
@ -128,6 +128,7 @@ The gRPC report could forward the collected logs to SkyWalking OAP server, or [S
|
|||
log.max_message_size=${SW_GRPC_LOG_MAX_MESSAGE_SIZE:10485760}
|
||||
```
|
||||
|
||||
* Support `-Dlog4j2.contextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextSelector` in gRPC log report.
|
||||
|
||||
## Transmitting un-formatted messages
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue