public class MatsMetricsLoggingInterceptor extends java.lang.Object implements MatsInterceptable.MatsLoggingInterceptor, MatsInitiateInterceptor, MatsStageInterceptor
"io.mats3.log.init"
and "io.mats3.log.stage"
.
All loglines' message-part is prepended with "#MATSLOG#"
.
"mats.AppName"
: The app-name which the MatsFactory was created with"mats.AppVersion"
: The app-version which the MatsFactory was created with"mats.Init"
(set to 'true' on initiation enter, and cleared on exit) and
"mats.Stage"
(set to constant 'true' for all Mats Stage processors). If initiation within a
stage, both are set."mats.CallNo"
: The "Call Number", which starts at 0 for the initiation, and then 1 for first
stage processing. (It refers to the "calls", i.e. passed messages.)"mats.InitiateCompleted"
: Present on a single logline per
completed initiation - can be used to count initiations. The value is same as
"mats.exec.Total.ms"
, see below. Assuming each initiation produces one message,
and hence one flow, this count should be identical to the count of MDC_MATS_FLOW_COMPLETED
. However, an
initiation can produce multiple messages (or zero), as described in MDC_MATS_COMPLETE_QUANTITY_OUT
, thus if
you sum the quantity value of lines that have this property set, the result should actually be identical to flows
completed."mats.InitOrStageId"
: The initiatorId ("fromId") from the first
(typically sole) message in an initiation. It should be common that all messages in a single initiation have the same
initiatorId. If there are no sent messages, the value for an initiation will be
"_no_outgoing_messages_"
. This property is also
set on the sent messages. For an initiation, this will be identical to "mats.init.Id"
, see
below."traceId"
: (Flow prop) Set for an initiation from when it is set in the user
code performing the initiation (reset to whatever it was upon exit of initiation lambda)"mats.init.App"
: (Flow prop) For an initiation, this is the current app,
so identical to "mats.AppName"
."mats.init.Id"
: (Flow prop) For an initiation, this will be identical to
"mats.InitOrStageId"
, see above."mats.Interactive"
: (Flow prop) This will be the value of the
interactive flag of the first (typically sole) message of an initiation. It should be common that all messages in a
single initiation have the same value. If there are no sent messages, the value for an initiation will be
false
."mats.Version"
: Mats implementation version, as gotten by
MatsFactory.FactoryConfig.getMatsImplementationVersion()
."mats.exec.Total.ms"
: Total time taken for the initiation to
complete - including both user code and all system code including commits. The same value is present on
"mats.InitiateCompleted"
, see above."mats.exec.UserLambda.ms"
: Part of total time taken for the
actual user lambda, including e.g. any external IO like DB, but excluding all system code, in particular message
creation, and commits."mats.exec.Out.ms"
: Part of total time taken for the creation and
serialization of Mats messages, and production and sending of "message system messages" (e.g. creating and
populating JMS Message plus jmsProducer.send(..)
for the JMS implementation)."mats.exec.Out.quantity"
: Number of messages sent in this
initiation. Should most often be 1, but can be multiple, and also zero."mats.exec.Out.TotalWire.bytes"
: The sum of
MDC_MATS_OUT_SIZE_TOTAL_WIRE
for all messages sent in this initiation."mats.exec.DbCommit.ms"
: Part of total time taken for committing
DB."mats.exec.MsgSysCommit.ms"
: Part of total time taken for
committing the message system (e.g. jmsSession.commit()
for the JMS implementation)"mats.exec.ops.time."
+{metricId}+"ms" and for measurements
"mats.exec.ops.measure."
+{metricId} + {baseUnit}. If labels/tags are
set on a metric, the MDC-key will be "mats.exec.ops.time."
+{metricId}+".tag." + {labelKey} and for measurements
"mats.exec.ops.measure."
+{metricId} + ".tag." + {labelKey}."mats.MessageReceived"
: Present on a single logline per received
message - can be used to count received messages. This count should be identical to the count of
MDC_MATS_STAGE_COMPLETED
. The value is the same as "mats.in.TotalPreprocDeserial.ms"
, see below."mats.StageId"
: Always set on the Processor threads for a stage, so any logline output inside
a Mats stage will have this set."traceId"
: The Mats flow's traceId, set from the initiation."mats.in.MsgSysId"
: The messageId the messaging system assigned the message when it was
produced on the sender side (e.g JMSMessageID for the JMS implementation)"mats.in.MatsMsgId"
: The messageId the Mats system assigned the
message when it was produced on the sender side. Note that it consists of the Mats flow id + an individual part per
message in the flow."mats.in.from.App"
: Which app this incoming message is from."mats.in.from.Id"
: Which initiatorId, endpointId or stageId this message is
from."mats.in.to.app"
, as that is "this" App, and thus identical to
"mats.AppName"
."mats.in.to.id"
, as that is "this" StageId, and thus identical to
"mats.StageId"
."mats.init.App"
: Which App initiated this Mats flow."mats.init.Id"
: The initiatorId of this MatsFlow;
matsInitiate.from(initiatorId)
."mats.Audit"
: Whether this Mats flow should be audited."mats.Interactive"
: Whether this Mats flow should be treated as
"interactive", meaning that a human is actively waiting for its execution."mats.Persistent"
: Whether the messaging system should use persistent (as
opposed to non-persistent) message passing, i.e. store to disk to survive a crash."mats.in.SinceSent.ms"
: Time taken from message was sent to it was
received. This metric gives the queue time, plus any other latency wrt. sending and committing on the sending side
and the transfer and reception on the receiving side.This metric is susceptible to time skews between
nodes."mats.in.PrecedEpStage.ms"
: Time taken from the
sending of a message from the Stage immediately preceding this Stage on the same Endpoint, to the reception of
a message on this Stage, i.e. the time between stages of an Endpoint (but also between an Initiation REQUEST and the
replyTo-reception on the Terminator). This timing includes queue times and processing times of requested endpoints
happening in between the send and the receive, as well as any other latencies. For example, it is the time between
when EndpointA.Stage2 performs a REQUEST to AnotherEndpointB, till the REPLY from that endpoint is received on
EndpointA.Stage3 (There might be dozens of message passing and processings in between those two stages of the
same endpoint, as AnotherEndpointB might itself have a dozen stages, each performing some requests to yet other
endpoints). This metric is susceptible to time skews between nodes."mats.in.TotalPreprocDeserial.ms"
: Total time taken
to preprocess and deserialize the incoming message. The same value is present on "mats.MessageReceived"
, see above."mats.in.MsgSysDeconstruct.ms"
: Part of total time taken to
pick out the Mats pieces from the incoming message system message."mats.in.EnvelopeWire.bytes"
: How big the incoming Mats envelope
("MatsTrace") was in the incoming message system message, i.e. "on the wire"."mats.in.EnvelopeDecompress.ms"
: Part of total time taken to
decompress the Mats envelope (will be 0 if it was sent plain, and > 0 if it was compressed)."mats.in.EnvelopeSerial.bytes"
: How big the incoming Mats
envelope ("MatsTrace") is in its serialized form, after decompression."mats.in.EnvelopeDeserial.ms"
: Part of total time taken to
deserialize the incoming serialized Mats envelope."mats.in.DataAndStateDeserial.ms"
: Part of total time
taken to deserialize the data and state objects (DTO and STO) from the Mats envelope."mats.in.TotalWire.bytes"
: Best approximation of the total message
system wire size (envelope + sideloads + any meta info set on the message). The overhead of the message system itself
will probably not be included."mats.in.StateSerial.bytes"
: The serialized size of the incoming
state object (STO). If there is no incoming state, 0
is returned - this is normal for initial stage of
an endpoint, unless an initiation sets initialState. If the serializer employs Strings, the returned value is
String.length()
, which might not exactly be the number of bytes depending on the String contents."mats.in.DataSerial.bytes"
: The serialized size of the incoming data
object (DTO). Note that null
might not return 0
bytes, depending on how the serializer
works. If the serializer employs Strings, the returned value is String.length()
, which might not exactly
be the number of bytes depending on the String contents."mats.StageCompleted"
: 'true' on a single logline per completed stage -
can be used to count stage processings. This count should be identical to the count of
MDC_MATS_MESSAGE_RECEIVED
. The value is same as "mats.exec.Total.ms"
,
see below."mats.StageId"
: Always set on the Processor threads for a stage, so any logline output inside
a Mats stage will have this set."mats.ProcessResult"
: the ProcessResult enum"mats.InitOrStageId"
: The StageId for the completed stage, thus identical to
"mats.StageId". The rationale for having this one more time is so that you can search for it across initiation
complete and stage complete, using a common key, as they are rather similar processes. Note that it is also set on
message sending."traceId"
: (Flow prop) The Mats flow's traceId, set from the initiation."mats.init.App"
: (Flow prop) The application that initiated this Mats
Flow."mats.init.Id"
: (Flow prop) The initiatorId for this Mats Flow, i.e. the
value of matsInitiate.from(initiatorId)
."mats.Interactive"
: (Flow prop) The value of the interactive flag for
this Mats Flow."mats.Version"
: Same as for initiation."mats.exec.Total.ms"
: Total time taken for the stage to complete -
including both user code and all system code including commits. The same value is present on
"mats.StageCompleted"
, see above."mats.exec.TotalPreprocDeserial.ms"
: Part of
the total time taken for the preprocessing and deserialization of the incoming message, same as the message received
logline's "mats.in.TotalPreprocDeserial.ms"
, as that piece is
also part of the stage processing."mats.exec.UserLambda.ms"
: Same as for initiation."mats.exec.Out.ms"
: Same as for initiation."mats.exec.Out.quantity"
: Same as for initiation."mats.exec.Out.TotalWire.bytes"
: Same as for
initiation."mats.exec.DbCommit.ms"
: Same as for initiation."mats.exec.MsgSysCommit.ms"
: Same as for initiation"mats.EndpointCompleted"
: Present on the same single logline as Stage
Completed if this also is the endpoint completion. Notice that the span from an initiation REQUEST to the
replyTo-reception on a Terminator is also counted as a EndpointCompleted. The value is the time taken from entry on
the initial stage of an endpoint, to stage completed on the final stage (or from Initiation REQUEST to
replyTo-reception on the Terminator). This metric is susceptible to time skews between nodes."mats.FlowCompleted"
: Present on the same single logline as Stage
Completed if this also is flow completion. can be used to count mats flows. This count has a very tight
relationship with MDC_MATS_INITIATE_COMPLETED
, read above. The value is the time taken from the flow was
initiated at a MatsInitiator
, or from within a flow, to it ends. This metric is susceptible to time skews
between nodes."mats.MessageSent"
: Present on single logline per sent message - can be
used to count sent messages. The value is the same as "mats.out.Total.ms"
, see
below."mats.DispatchType"
: The DispatchType enum; INIT, STAGE, STAGE_INIT"mats.out.MatsMsgId"
: The messageId the Mats system gave the
message. Note that it consists of the Mats flow id + an individual part per message in the flow."mats.out.MsgSysId"
: The messageId that the messaging system gave
the message - for the JMS Implementation, it is the JMSMessageId."mats.AppName"
."mats.InitOrStageId"
: "this" StageId or InitiatorId: Who created this
message."mats.out.to.Id"
: target EndpointId/StageId"mats.init.App"
: Which App initiated this Mats flow."mats.init.Id"
: The initiatorId of this MatsFlow;
matsInitiate.from(initiatorId)
."mats.Audit"
: Whether this Mats flow should be audited."mats.Interactive"
: Whether this Mats flow should be treated as
"interactive", meaning that a human is actively waiting for its execution."mats.Persistent"
: Whether the messaging system should use persistent (as
opposed to non-persistent) message passing, i.e. store to disk to survive a crash."mats.out.Total.ms"
: Total time taken to produce the message, all of the
Mats envelope ("MatsTrace"), serializing, compressing and producing the message system message (sum of the below
parts). The same value is present on "mats.MessageSent"
, see above."mats.out.EnvelopeProduce.ms"
: Part of the total time taken to
produce the Mats envelope ("MatsTrace"), including serialization of all constituents: DTO, STO and any Trace
Properties."mats.out.EnvelopeSerial.ms"
: Part of the total time taken to
serialize the Mats envelope."mats.out.EnvelopeSerial.bytes"
: Size of the serialized Mats
envelope."mats.out.EnvelopeCompress.ms"
: Part of the total time taken
to compress the serialized Mats envelope"mats.out.EnvelopeWire.bytes"
: Size of the compressed serialized
Mats envelope."mats.out.MsgSys.ms"
: Part of the total time taken to produce and send
the message system message."mats.out.TotalWire.bytes"
: Best approximation of the total message
system wire size (envelope + sideloads + any meta info set on the message). The overhead of the message system itself
will probably not be included."mats.out.DataSerial.bytes"
: The serialized size of the outgoing
data object (DTO). Note that null
might not return 0
bytes, depending on how the serializer
works. If the serializer employs Strings, the returned value is String.length()
, which might not exactly
be the number of bytes depending on the String contents."mats.out.StateSerial.bytes"
, as it felt confusing what any outgoing state
relates to: It is not the target/receiving stage, as specified in MDC_MATS_OUT_TO_ID
. The outgoing state (if
any) is a part of the stack, and relates to the next stage of the current endpoint. However, this metric is available
on the incoming side, via MDC_MATS_IN_SIZE_STATE_SERIAL
.Trace Property
MatsInterceptable.MatsLoggingInterceptor.SUPPRESS_LOGGING_TRACE_PROPERTY_KEY
and the Endpoint Attribute
MatsInterceptable.MatsLoggingInterceptor.SUPPRESS_LOGGING_ENDPOINT_ALLOWS_ATTRIBUTE_KEY
. Number of suppressed log outputs per
matsFactoryName/initAppName/initiatorId/stageId will be logged every 30 minutes (stageId = "INIT" for initiations),
on the LOG_STAGE_NAME
logger. The first logging for each combo after logging the number of suppressions will
also be logged in full.
Note: This interceptor (SLF4J Logger with Metrics on MDC) has special support in JmsMatsFactory
: If
present on the classpath, it is automatically installed using the install(MatsInterceptable)
install
method. This interceptor implements the special marker-interface MatsInterceptable.MatsLoggingInterceptor
of which there
can only be one instance installed in a JmsMatsFactory
- implying that if you want a different type of
logging, you may implement a custom variant (either subclassing this, on your own risk, or start from scratch), and
simply install it, leading to this instance being removed (or just not have this variant on the classpath).Modifier and Type | Class and Description |
---|---|
protected static class |
MatsMetricsLoggingInterceptor.Level |
MatsInitiateInterceptor.InitiateCompletedContext, MatsInitiateInterceptor.InitiateInterceptContext, MatsInitiateInterceptor.InitiateInterceptOutgoingMessagesContext, MatsInitiateInterceptor.InitiateInterceptUserLambdaContext, MatsInitiateInterceptor.InitiateStartedContext, MatsInitiateInterceptor.MatsInitiateInterceptOutgoingMessages, MatsInitiateInterceptor.MatsInitiateInterceptUserLambda
MatsStageInterceptor.MatsStageInterceptOutgoingMessages, MatsStageInterceptor.MatsStageInterceptUserLambda, MatsStageInterceptor.StageCommonContext, MatsStageInterceptor.StageCompletedContext, MatsStageInterceptor.StageInterceptContext, MatsStageInterceptor.StageInterceptOutgoingMessageContext, MatsStageInterceptor.StageInterceptUserLambdaContext, MatsStageInterceptor.StagePreprocessAndDeserializeErrorContext, MatsStageInterceptor.StageReceivedContext
SUPPRESS_LOGGING_ENDPOINT_ALLOWS_ATTRIBUTE_KEY, SUPPRESS_LOGGING_TRACE_PROPERTY_KEY
Modifier | Constructor and Description |
---|---|
protected |
MatsMetricsLoggingInterceptor() |
Modifier and Type | Method and Description |
---|---|
protected void |
commonStageAndInitiateCompleted_inner(CommonCompletedContext ctx,
java.lang.String matsVersion,
java.lang.String initOrStageId,
java.lang.String initiatingAppName,
java.lang.String initiatorId,
boolean interactive,
java.lang.String logPrefix,
java.lang.String extraBreakdown,
long extraNanosBreakdown,
java.util.List<MatsOutgoingMessage.MatsSentOutgoingMessage> outgoingMessages,
MatsMetricsLoggingInterceptor.Level level,
org.slf4j.Logger log,
java.lang.Throwable t,
java.lang.String logPostfix,
java.util.Map<java.lang.String,java.lang.String> completedMDC) |
protected void |
commonStageAndInitiateCompleted(CommonCompletedContext ctx,
java.lang.String matsVersion,
java.lang.String initOrStageId,
java.lang.String initiatingAppName,
java.lang.String initatorId,
boolean interactive,
java.lang.String extraResult,
org.slf4j.Logger logger,
java.util.List<MatsOutgoingMessage.MatsSentOutgoingMessage> outgoingMessages,
java.lang.String messageSenderName,
java.lang.String extraBreakdown,
long extraNanosBreakdown,
java.util.Map<java.lang.String,java.lang.String> completedMDC) |
void |
initiateCompleted(MatsInitiateInterceptor.InitiateCompletedContext ctx) |
static void |
install(MatsInterceptable matsInterceptableMatsFactory)
Adds the singleton
INSTANCE as both Initiation and Stage interceptors. |
protected static double |
ms(long nanosTaken)
Converts nanos to millis with a sane number of significant digits ("3.5" significant digits), but assuming that
this is not used to measure things that take less than 0.001 milliseconds (in which case it will be "rounded" to
0.0001, 1e-4, as a special value).
|
protected void |
msgLog_AddMsgMdcs(MatsOutgoingMessage.MatsSentOutgoingMessage msg,
java.lang.Runnable runnable) |
protected java.lang.String |
msgLog_CreateMsgLogLine(java.lang.String messageSenderName,
MatsOutgoingMessage.MatsSentOutgoingMessage msg) |
protected static java.lang.String |
msS(long nanosTake) |
protected void |
outputMeasurementLogline(org.slf4j.Logger logger,
java.lang.String what,
java.lang.String mdcPrefix,
java.lang.String metricId,
java.lang.String baseUnit,
java.lang.String measure,
java.lang.String metricDescription,
java.lang.String[] labelKeyValue) |
protected void |
outputMeasurementsLoglines(org.slf4j.Logger logger,
CommonCompletedContext ctx) |
static void |
remove(MatsInterceptable matsInterceptableMatsFactory)
Removes the singleton
INSTANCE as both Initiation and Stage interceptors. |
protected boolean |
shouldSuppressStageLogging(MatsStageInterceptor.StageCommonContext ctx) |
void |
stageCompleted(MatsStageInterceptor.StageCompletedContext ctx)
Invoked after the stage is fully completed, outgoing messages sent, db and messaging system committed.
|
void |
stageReceived(MatsStageInterceptor.StageReceivedContext ctx)
Invoked right after message have been received, preprocessed and deserialized, before invoking the user lambda.
|
protected void |
suppressionSummarizerThreadRunnable() |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
initiateStarted
stageCompletedNextDirect, stagePreprocessAndDeserializeError
public static final java.lang.String LOG_INIT_NAME
public static final java.lang.String LOG_STAGE_NAME
public static final int NUMBER_OF_MILLIS_BETWEEN_SUPPRESSION_LOG
protected static final org.slf4j.Logger log_init
protected static final org.slf4j.Logger log_stage
protected static final java.lang.String SUPPRESS_LOGGING_INTERCEPT_CONTEXT_ATTRIBUTE
public static final java.lang.String LOG_PREFIX
public static final java.lang.String SUPPRESSION_MDC_KEY_PARTS_SEPARATOR
public static final java.lang.String MDC_TRACE_ID
public static final MatsMetricsLoggingInterceptor INSTANCE
public static final java.lang.String MDC_MATS_VERSION
public static final java.lang.String MDC_INIT_OR_STAGE_ID
public static final java.lang.String MDC_MATS_COMPLETE_TIME_TOTAL
public static final java.lang.String MDC_MATS_COMPLETE_TIME_USER_LAMBDA
public static final java.lang.String MDC_MATS_COMPLETE_TIME_OUT
public static final java.lang.String MDC_MATS_COMPLETE_QUANTITY_OUT
public static final java.lang.String MDC_MATS_COMPLETE_SIZE_OUT_TOTAL_WIRE
public static final java.lang.String MDC_MATS_COMPLETE_TIME_DB_COMMIT
public static final java.lang.String MDC_MATS_COMPLETE_TIME_MSGSYS_COMMIT
public static final java.lang.String MDC_MATS_COMPLETE_OPS_TIMING_PREFIX
public static final java.lang.String MDC_MATS_COMPLETE_OPS_MEASURE_PREFIX
public static final java.lang.String MDC_MATS_INITIATE_COMPLETED
public static final java.lang.String MDC_MATS_MESSAGE_RECEIVED
public static final java.lang.String MDC_MATS_IN_FROM_APP_NAME
public static final java.lang.String MDC_MATS_IN_FROM_ID
public static final java.lang.String MDC_MATS_IN_MATS_MESSAGE_ID
public static final java.lang.String MDC_MATS_IN_TIME_SINCE_SENT
public static final java.lang.String MDC_MATS_IN_TIME_SINCE_PRECEDING_ENDPOINT_STAGE
public static final java.lang.String MDC_MATS_IN_SIZE_TOTAL_WIRE
public static final java.lang.String MDC_MATS_IN_TIME_TOTAL_PREPROC_AND_DESERIAL
public static final java.lang.String MDC_MATS_IN_TIME_MSGSYS_DECONSTRUCT
public static final java.lang.String MDC_MATS_IN_SIZE_ENVELOPE_WIRE
public static final java.lang.String MDC_MATS_IN_TIME_ENVELOPE_DECOMPRESS
public static final java.lang.String MDC_MATS_IN_SIZE_ENVELOPE_SERIAL
public static final java.lang.String MDC_MATS_IN_TIME_ENVELOPE_DESERIAL
public static final java.lang.String MDC_MATS_IN_TIME_DATA_AND_STATE_DESERIAL
public static final java.lang.String MDC_MATS_IN_SIZE_STATE_SERIAL
public static final java.lang.String MDC_MATS_IN_SIZE_DATA_SERIAL
public static final java.lang.String MDC_MATS_STAGE_COMPLETED
public static final java.lang.String MDC_MATS_PROCESS_RESULT
public static final java.lang.String MDC_MATS_COMPLETE_TIME_TOTAL_PREPROC_AND_DESERIAL
public static final java.lang.String MDC_MATS_ENDPOINT_COMPLETED
public static final java.lang.String MDC_MATS_ENDPOINT_COMPLETE_TIME_TOTAL
public static final java.lang.String MDC_MATS_FLOW_COMPLETED
public static final java.lang.String MDC_MATS_FLOW_COMPLETE_TIME_TOTAL
public static final java.lang.String MDC_MATS_MESSAGE_SENT
public static final java.lang.String MDC_MATS_DISPATCH_TYPE
public static final java.lang.String MDC_MATS_OUT_MATS_MESSAGE_ID
public static final java.lang.String MDC_MATS_OUT_MESSAGE_SYSTEM_ID
public static final java.lang.String MDC_MATS_OUT_FROM_ID
public static final java.lang.String MDC_MATS_OUT_TO_ID
public static final java.lang.String MDC_MATS_OUT_TIME_TOTAL
public static final java.lang.String MDC_MATS_OUT_SIZE_DATA_SERIAL
public static final java.lang.String MDC_MATS_OUT_TIME_ENVELOPE_PRODUCE
public static final java.lang.String MDC_MATS_OUT_TIME_ENVELOPE_SERIAL
public static final java.lang.String MDC_MATS_OUT_SIZE_ENVELOPE_SERIAL
public static final java.lang.String MDC_MATS_OUT_TIME_ENVELOPE_COMPRESS
public static final java.lang.String MDC_MATS_OUT_SIZE_ENVELOPE_WIRE
public static final java.lang.String MDC_MATS_OUT_SIZE_TOTAL_WIRE
public static final java.lang.String MDC_MATS_OUT_TIME_MSGSYS
public static final java.lang.String MDC_MATS_INIT_APP
public static final java.lang.String MDC_MATS_INIT_ID
public static final java.lang.String MDC_MATS_AUDIT
public static final java.lang.String MDC_MATS_INTERACTIVE
public static final java.lang.String MDC_MATS_PERSISTENT
protected final java.util.concurrent.ConcurrentHashMap<java.lang.String,java.util.concurrent.atomic.AtomicInteger> _suppressions
public static void install(MatsInterceptable matsInterceptableMatsFactory)
INSTANCE
as both Initiation and Stage interceptors.matsInterceptableMatsFactory
- the MatsInterceptable
MatsFactory to add it to.public static void remove(MatsInterceptable matsInterceptableMatsFactory)
INSTANCE
as both Initiation and Stage interceptors.matsInterceptableMatsFactory
- the MatsInterceptable
to remove it from.protected void suppressionSummarizerThreadRunnable()
public void initiateCompleted(MatsInitiateInterceptor.InitiateCompletedContext ctx)
initiateCompleted
in interface MatsInitiateInterceptor
protected boolean shouldSuppressStageLogging(MatsStageInterceptor.StageCommonContext ctx)
public void stageReceived(MatsStageInterceptor.StageReceivedContext ctx)
MatsStageInterceptor
MatsStageInterceptor.stagePreprocessAndDeserializeError(StagePreprocessAndDeserializeErrorContext)
is invoked instead).stageReceived
in interface MatsStageInterceptor
public void stageCompleted(MatsStageInterceptor.StageCompletedContext ctx)
MatsStageInterceptor
MatsStageInterceptor.MatsStageInterceptOutgoingMessages
.stageCompleted
in interface MatsStageInterceptor
MatsStageInterceptor.stageCompletedNextDirect(StageCompletedContext)
protected void outputMeasurementsLoglines(org.slf4j.Logger logger, CommonCompletedContext ctx)
protected void outputMeasurementLogline(org.slf4j.Logger logger, java.lang.String what, java.lang.String mdcPrefix, java.lang.String metricId, java.lang.String baseUnit, java.lang.String measure, java.lang.String metricDescription, java.lang.String[] labelKeyValue)
protected void commonStageAndInitiateCompleted(CommonCompletedContext ctx, java.lang.String matsVersion, java.lang.String initOrStageId, java.lang.String initiatingAppName, java.lang.String initatorId, boolean interactive, java.lang.String extraResult, org.slf4j.Logger logger, java.util.List<MatsOutgoingMessage.MatsSentOutgoingMessage> outgoingMessages, java.lang.String messageSenderName, java.lang.String extraBreakdown, long extraNanosBreakdown, java.util.Map<java.lang.String,java.lang.String> completedMDC)
protected void commonStageAndInitiateCompleted_inner(CommonCompletedContext ctx, java.lang.String matsVersion, java.lang.String initOrStageId, java.lang.String initiatingAppName, java.lang.String initiatorId, boolean interactive, java.lang.String logPrefix, java.lang.String extraBreakdown, long extraNanosBreakdown, java.util.List<MatsOutgoingMessage.MatsSentOutgoingMessage> outgoingMessages, MatsMetricsLoggingInterceptor.Level level, org.slf4j.Logger log, java.lang.Throwable t, java.lang.String logPostfix, java.util.Map<java.lang.String,java.lang.String> completedMDC)
protected void msgLog_AddMsgMdcs(MatsOutgoingMessage.MatsSentOutgoingMessage msg, java.lang.Runnable runnable)
protected java.lang.String msgLog_CreateMsgLogLine(java.lang.String messageSenderName, MatsOutgoingMessage.MatsSentOutgoingMessage msg)
protected static java.lang.String msS(long nanosTake)
protected static double ms(long nanosTaken)