Package org.apache.logging.log4j.message
Class ReusableParameterizedMessage
- java.lang.Object
-
- org.apache.logging.log4j.message.ReusableParameterizedMessage
-
- All Implemented Interfaces:
java.io.Serializable,Clearable,Message,ParameterVisitable,ReusableMessage,StringBuilderFormattable
public class ReusableParameterizedMessage extends java.lang.Object implements ReusableMessage, ParameterVisitable, Clearable
Reusable parameterized message. This message is mutable and is not safe to be accessed or modified by multiple threads concurrently.- Since:
- 2.6
- See Also:
ParameterizedMessage, Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description private intargCountprivate java.lang.ThreadLocal<java.lang.StringBuilder>bufferprivate int[]indicesprivate static intMAX_PARMSprivate java.lang.StringmessagePatternprivate static intMIN_BUILDER_SIZEprivate java.lang.Object[]params(package private) booleanreservedprivate static longserialVersionUIDprivate java.lang.Throwablethrowableprivate intusedCountprivate java.lang.Object[]varargs
-
Constructor Summary
Constructors Constructor Description ReusableParameterizedMessage()Creates a reusable message.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidclear()Resets the object to a clean state.private static intcount(java.lang.String messagePattern, int[] indices)<S> voidforEachParameter(ParameterConsumer<S> action, S state)Performs the given action for each parameter until all values have been processed or the action throws an exception.voidformatTo(java.lang.StringBuilder builder)Writes a text representation of this object into the specifiedStringBuilder, ideally without allocating temporary objects.private java.lang.StringBuildergetBuffer()java.lang.StringgetFormat()Returns the message pattern.java.lang.StringgetFormattedMessage()Returns the formatted message.shortgetParameterCount()Returns the number of parameters that was used to initialize this reusable message for the current content.java.lang.Object[]getParameters()Returns the message parameters.private java.lang.Object[]getParams()java.lang.ThrowablegetThrowable()Returns the Throwable that was given as the last argument, if any.private java.lang.Object[]getTrimmedParams()private voidinit(java.lang.String messagePattern, int argCount, java.lang.Object[] paramArray)private voidinitThrowable(java.lang.Object[] params, int argCount, int usedParams)Messagememento()Returns an immutable snapshot of the current internal state of this reusable message.(package private) ReusableParameterizedMessagereserve()Sets the reserved flag to true and returns this object.(package private) ReusableParameterizedMessageset(java.lang.String messagePattern, java.lang.Object p0)(package private) ReusableParameterizedMessageset(java.lang.String messagePattern, java.lang.Object... arguments)(package private) ReusableParameterizedMessageset(java.lang.String messagePattern, java.lang.Object p0, java.lang.Object p1)(package private) ReusableParameterizedMessageset(java.lang.String messagePattern, java.lang.Object p0, java.lang.Object p1, java.lang.Object p2)(package private) ReusableParameterizedMessageset(java.lang.String messagePattern, java.lang.Object p0, java.lang.Object p1, java.lang.Object p2, java.lang.Object p3)(package private) ReusableParameterizedMessageset(java.lang.String messagePattern, java.lang.Object p0, java.lang.Object p1, java.lang.Object p2, java.lang.Object p3, java.lang.Object p4)(package private) ReusableParameterizedMessageset(java.lang.String messagePattern, java.lang.Object p0, java.lang.Object p1, java.lang.Object p2, java.lang.Object p3, java.lang.Object p4, java.lang.Object p5)(package private) ReusableParameterizedMessageset(java.lang.String messagePattern, java.lang.Object p0, java.lang.Object p1, java.lang.Object p2, java.lang.Object p3, java.lang.Object p4, java.lang.Object p5, java.lang.Object p6)(package private) ReusableParameterizedMessageset(java.lang.String messagePattern, java.lang.Object p0, java.lang.Object p1, java.lang.Object p2, java.lang.Object p3, java.lang.Object p4, java.lang.Object p5, java.lang.Object p6, java.lang.Object p7)(package private) ReusableParameterizedMessageset(java.lang.String messagePattern, java.lang.Object p0, java.lang.Object p1, java.lang.Object p2, java.lang.Object p3, java.lang.Object p4, java.lang.Object p5, java.lang.Object p6, java.lang.Object p7, java.lang.Object p8)(package private) ReusableParameterizedMessageset(java.lang.String messagePattern, java.lang.Object p0, java.lang.Object p1, java.lang.Object p2, java.lang.Object p3, java.lang.Object p4, java.lang.Object p5, java.lang.Object p6, java.lang.Object p7, java.lang.Object p8, java.lang.Object p9)java.lang.Object[]swapParameters(java.lang.Object[] emptyReplacement)Returns the parameter array that was used to initialize this reusable message and replaces it with the specified array.java.lang.StringtoString()
-
-
-
Field Detail
-
MIN_BUILDER_SIZE
private static final int MIN_BUILDER_SIZE
- See Also:
- Constant Field Values
-
MAX_PARMS
private static final int MAX_PARMS
- See Also:
- Constant Field Values
-
serialVersionUID
private static final long serialVersionUID
- See Also:
- Constant Field Values
-
buffer
private transient java.lang.ThreadLocal<java.lang.StringBuilder> buffer
-
messagePattern
private java.lang.String messagePattern
-
argCount
private int argCount
-
usedCount
private int usedCount
-
indices
private final int[] indices
-
varargs
private transient java.lang.Object[] varargs
-
params
private transient java.lang.Object[] params
-
throwable
private transient java.lang.Throwable throwable
-
reserved
transient boolean reserved
-
-
Method Detail
-
getTrimmedParams
private java.lang.Object[] getTrimmedParams()
-
getParams
private java.lang.Object[] getParams()
-
swapParameters
public java.lang.Object[] swapParameters(java.lang.Object[] emptyReplacement)
Description copied from interface:ReusableMessageReturns the parameter array that was used to initialize this reusable message and replaces it with the specified array. The returned parameter array will no longer be modified by this reusable message. The specified array is now "owned" by this reusable message and can be modified if necessary for the next log event.ReusableMessages that have no parameters return the specified array.
This method is used by asynchronous loggers to pass the parameter array to a background thread without allocating new objects. The actual number of parameters in the returned array can be determined with
ReusableMessage.getParameterCount().- Specified by:
swapParametersin interfaceReusableMessage- Parameters:
emptyReplacement- the parameter array that can be used for subsequent uses of this reusable message. This replacement array must have at least 10 elements (the number of varargs supported by the Logger API).- Returns:
- the parameter array for the current message content. This may be a vararg array of any length, or it may be a reusable array of 10 elements used to hold the unrolled vararg parameters.
- See Also:
ReusableMessage.getParameterCount()
-
getParameterCount
public short getParameterCount()
Description copied from interface:ReusableMessageReturns the number of parameters that was used to initialize this reusable message for the current content.The parameter array returned by
ReusableMessage.swapParameters(Object[])may be larger than the actual number of parameters. Callers should use this method to determine how many elements the array contains.- Specified by:
getParameterCountin interfaceReusableMessage- Returns:
- the current number of parameters
-
forEachParameter
public <S> void forEachParameter(ParameterConsumer<S> action, S state)
Description copied from interface:ParameterVisitablePerforms the given action for each parameter until all values have been processed or the action throws an exception.The second parameter lets callers pass in a stateful object to be modified with the key-value pairs, so the TriConsumer implementation itself can be stateless and potentially reusable.
- Specified by:
forEachParameterin interfaceParameterVisitable- Type Parameters:
S- type of the third parameter- Parameters:
action- The action to be performed for each key-value pair in this collectionstate- the object to be passed as the third parameter to each invocation on the specified ParameterConsumer.
-
memento
public Message memento()
Description copied from interface:ReusableMessageReturns an immutable snapshot of the current internal state of this reusable message. The returned snapshot will not be affected by subsequent modifications of this reusable message.- Specified by:
mementoin interfaceReusableMessage- Returns:
- an immutable snapshot of this message
-
init
private void init(java.lang.String messagePattern, int argCount, java.lang.Object[] paramArray)
-
count
private static int count(java.lang.String messagePattern, int[] indices)
-
initThrowable
private void initThrowable(java.lang.Object[] params, int argCount, int usedParams)
-
set
ReusableParameterizedMessage set(java.lang.String messagePattern, java.lang.Object... arguments)
-
set
ReusableParameterizedMessage set(java.lang.String messagePattern, java.lang.Object p0)
-
set
ReusableParameterizedMessage set(java.lang.String messagePattern, java.lang.Object p0, java.lang.Object p1)
-
set
ReusableParameterizedMessage set(java.lang.String messagePattern, java.lang.Object p0, java.lang.Object p1, java.lang.Object p2)
-
set
ReusableParameterizedMessage set(java.lang.String messagePattern, java.lang.Object p0, java.lang.Object p1, java.lang.Object p2, java.lang.Object p3)
-
set
ReusableParameterizedMessage set(java.lang.String messagePattern, java.lang.Object p0, java.lang.Object p1, java.lang.Object p2, java.lang.Object p3, java.lang.Object p4)
-
set
ReusableParameterizedMessage set(java.lang.String messagePattern, java.lang.Object p0, java.lang.Object p1, java.lang.Object p2, java.lang.Object p3, java.lang.Object p4, java.lang.Object p5)
-
set
ReusableParameterizedMessage set(java.lang.String messagePattern, java.lang.Object p0, java.lang.Object p1, java.lang.Object p2, java.lang.Object p3, java.lang.Object p4, java.lang.Object p5, java.lang.Object p6)
-
set
ReusableParameterizedMessage set(java.lang.String messagePattern, java.lang.Object p0, java.lang.Object p1, java.lang.Object p2, java.lang.Object p3, java.lang.Object p4, java.lang.Object p5, java.lang.Object p6, java.lang.Object p7)
-
set
ReusableParameterizedMessage set(java.lang.String messagePattern, java.lang.Object p0, java.lang.Object p1, java.lang.Object p2, java.lang.Object p3, java.lang.Object p4, java.lang.Object p5, java.lang.Object p6, java.lang.Object p7, java.lang.Object p8)
-
set
ReusableParameterizedMessage set(java.lang.String messagePattern, java.lang.Object p0, java.lang.Object p1, java.lang.Object p2, java.lang.Object p3, java.lang.Object p4, java.lang.Object p5, java.lang.Object p6, java.lang.Object p7, java.lang.Object p8, java.lang.Object p9)
-
getFormat
public java.lang.String getFormat()
Returns the message pattern.
-
getParameters
public java.lang.Object[] getParameters()
Returns the message parameters.- Specified by:
getParametersin interfaceMessage- Returns:
- the message parameters.
-
getThrowable
public java.lang.Throwable getThrowable()
Returns the Throwable that was given as the last argument, if any. It will not survive serialization. The Throwable exists as part of the message primarily so that it can be extracted from the end of the list of parameters and then be added to the LogEvent. As such, the Throwable in the event should not be used once the LogEvent has been constructed.- Specified by:
getThrowablein interfaceMessage- Returns:
- the Throwable, if any.
-
getFormattedMessage
public java.lang.String getFormattedMessage()
Returns the formatted message.- Specified by:
getFormattedMessagein interfaceMessage- Returns:
- the formatted message.
-
getBuffer
private java.lang.StringBuilder getBuffer()
-
formatTo
public void formatTo(java.lang.StringBuilder builder)
Description copied from interface:StringBuilderFormattableWrites a text representation of this object into the specifiedStringBuilder, ideally without allocating temporary objects.- Specified by:
formatToin interfaceStringBuilderFormattable- Parameters:
builder- the StringBuilder to write into
-
reserve
ReusableParameterizedMessage reserve()
Sets the reserved flag to true and returns this object.- Returns:
- this object
- Since:
- 2.7
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
-