This is an automated email from the ASF dual-hosted git repository.
tabish pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/qpid-protonj2.git
The following commit(s) were added to refs/heads/main by this push:
new e886f0a PROTON-2380 Provide a stable Id for frame logging output
e886f0a is described below
commit e886f0a3707b186408a841ca6705124a4db8d06d
Author: Timothy Bish <[email protected]>
AuthorDate: Thu May 6 15:55:09 2021 -0400
PROTON-2380 Provide a stable Id for frame logging output
Provide a means of identifying the "connection" that a set of logs is
linked to for ease of debugging multi-connection application logs.
---
.../engine/impl/ProtonFrameLoggingHandler.java | 44 +++++++++++++---------
1 file changed, 26 insertions(+), 18 deletions(-)
diff --git
a/protonj2/src/main/java/org/apache/qpid/protonj2/engine/impl/ProtonFrameLoggingHandler.java
b/protonj2/src/main/java/org/apache/qpid/protonj2/engine/impl/ProtonFrameLoggingHandler.java
index 7993c07..208e9ad 100644
---
a/protonj2/src/main/java/org/apache/qpid/protonj2/engine/impl/ProtonFrameLoggingHandler.java
+++
b/protonj2/src/main/java/org/apache/qpid/protonj2/engine/impl/ProtonFrameLoggingHandler.java
@@ -44,6 +44,7 @@ public class ProtonFrameLoggingHandler implements
EngineHandler {
private static final boolean TRACE_FRM_ENABLED = checkTraceFramesEnabled();
private boolean traceFrames = TRACE_FRM_ENABLED;
+ private int uniqueIdentifier;
private static final boolean checkTraceFramesEnabled() {
String value = System.getenv(PN_TRACE_FRM);
@@ -59,12 +60,19 @@ public class ProtonFrameLoggingHandler implements
EngineHandler {
}
@Override
+ public void handlerAdded(EngineHandlerContext context) {
+ // Provides a stable Id for the handler to use when logging frame
traces so that applications with
+ // multiple connections can be more easily debugged.
+ uniqueIdentifier = System.identityHashCode(context.engine());
+ }
+
+ @Override
public void handleRead(EngineHandlerContext context, HeaderEnvelope
envelope) {
if (traceFrames) {
- trace(envelope.isSaslHeader() ? SASL_OUT_PREFIX : AMQP_OUT_PREFIX,
0, envelope.getBody(), null);
+ trace(envelope.isSaslHeader() ? SASL_OUT_PREFIX : AMQP_OUT_PREFIX,
uniqueIdentifier, 0, envelope.getBody(), null);
}
- log(envelope.isSaslHeader() ? SASL_OUT_PREFIX : AMQP_OUT_PREFIX, 0,
envelope.getBody(), null);
+ log(envelope.isSaslHeader() ? SASL_OUT_PREFIX : AMQP_OUT_PREFIX,
uniqueIdentifier, 0, envelope.getBody(), null);
context.fireRead(envelope);
}
@@ -72,10 +80,10 @@ public class ProtonFrameLoggingHandler implements
EngineHandler {
@Override
public void handleRead(EngineHandlerContext context, SASLEnvelope
envelope) {
if (traceFrames) {
- trace(SASL_IN_PREFIX, 0, envelope.getBody(), null);
+ trace(SASL_IN_PREFIX, uniqueIdentifier, 0, envelope.getBody(),
null);
}
- log(SASL_IN_PREFIX, 0, envelope.getBody(), envelope.getPayload());
+ log(SASL_IN_PREFIX, uniqueIdentifier, 0, envelope.getBody(),
envelope.getPayload());
context.fireRead(envelope);
}
@@ -83,11 +91,11 @@ public class ProtonFrameLoggingHandler implements
EngineHandler {
@Override
public void handleRead(EngineHandlerContext context, IncomingAMQPEnvelope
envelope) {
if (traceFrames) {
- trace(AMQP_IN_PREFIX, envelope.getChannel(), envelope.getBody(),
envelope.getPayload());
+ trace(AMQP_IN_PREFIX, uniqueIdentifier, envelope.getChannel(),
envelope.getBody(), envelope.getPayload());
}
if (LOG.isTraceEnabled()) {
- log(AMQP_IN_PREFIX, envelope.getChannel(), envelope.getBody(),
envelope.getPayload());
+ log(AMQP_IN_PREFIX, uniqueIdentifier, envelope.getChannel(),
envelope.getBody(), envelope.getPayload());
}
context.fireRead(envelope);
@@ -96,10 +104,10 @@ public class ProtonFrameLoggingHandler implements
EngineHandler {
@Override
public void handleWrite(EngineHandlerContext context, HeaderEnvelope
envelope) {
if (traceFrames) {
- trace(envelope.isSaslHeader() ? SASL_OUT_PREFIX : AMQP_OUT_PREFIX,
0, envelope.getBody(), null);
+ trace(envelope.isSaslHeader() ? SASL_OUT_PREFIX : AMQP_OUT_PREFIX,
uniqueIdentifier, 0, envelope.getBody(), null);
}
- log(envelope.isSaslHeader() ? SASL_OUT_PREFIX : AMQP_OUT_PREFIX, 0,
envelope.getBody(), null);
+ log(envelope.isSaslHeader() ? SASL_OUT_PREFIX : AMQP_OUT_PREFIX,
uniqueIdentifier, 0, envelope.getBody(), null);
context.fireWrite(envelope);
}
@@ -107,11 +115,11 @@ public class ProtonFrameLoggingHandler implements
EngineHandler {
@Override
public void handleWrite(EngineHandlerContext context, OutgoingAMQPEnvelope
envelope) {
if (traceFrames) {
- trace(AMQP_OUT_PREFIX, envelope.getChannel(), envelope.getBody(),
envelope.getPayload());
+ trace(AMQP_OUT_PREFIX, uniqueIdentifier, envelope.getChannel(),
envelope.getBody(), envelope.getPayload());
}
if (LOG.isTraceEnabled()) {
- log(AMQP_OUT_PREFIX, envelope.getChannel(), envelope.getBody(),
envelope.getPayload());
+ log(AMQP_OUT_PREFIX, uniqueIdentifier, envelope.getChannel(),
envelope.getBody(), envelope.getPayload());
}
context.fireWrite(envelope);
@@ -120,27 +128,27 @@ public class ProtonFrameLoggingHandler implements
EngineHandler {
@Override
public void handleWrite(EngineHandlerContext context, SASLEnvelope
envelope) {
if (traceFrames) {
- trace(SASL_OUT_PREFIX, 0, envelope.getBody(), null);
+ trace(SASL_OUT_PREFIX, uniqueIdentifier, 0, envelope.getBody(),
null);
}
- log(SASL_OUT_PREFIX, 0, envelope.getBody(), null);
+ log(SASL_OUT_PREFIX, uniqueIdentifier, 0, envelope.getBody(), null);
context.fireWrite(envelope);
}
- private static final void log(String prefix, int channel, Object
performative, ProtonBuffer payload) {
+ private static final void log(String prefix, int connection, int channel,
Object performative, ProtonBuffer payload) {
if (payload == null) {
- LOG.trace("{}: [{}] {}", prefix, channel, performative);
+ LOG.trace("{}:[{}:{}] {}", prefix, connection, channel,
performative);
} else {
- LOG.trace("{}: [{}] {} - {}", prefix, performative,
StringUtils.toQuotedString(payload, PAYLOAD_STRING_LIMIT, true));
+ LOG.trace("{}:[{}:{}] {} - {}", prefix, connection, performative,
StringUtils.toQuotedString(payload, PAYLOAD_STRING_LIMIT, true));
}
}
- private static final void trace(String prefix, int channel, Object
performative, ProtonBuffer payload) {
+ private static final void trace(String prefix, int connection, int
channel, Object performative, ProtonBuffer payload) {
if (payload == null) {
- System.out.println(String.format("%s: [%d] %s", prefix, channel,
performative));
+ System.out.println(String.format("%s:[%d:%d] %s", prefix,
connection, channel, performative));
} else {
- System.out.println(String.format("%s: [%d] %s - %s", prefix,
channel, performative, StringUtils.toQuotedString(payload,
PAYLOAD_STRING_LIMIT, true)));
+ System.out.println(String.format("%s:[%d:%d] %s - %s", prefix,
connection, channel, performative, StringUtils.toQuotedString(payload,
PAYLOAD_STRING_LIMIT, true)));
}
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]