Package org.apache.logging.log4j.message
Class ReusableParameterizedMessage
- java.lang.Object
-
- org.apache.logging.log4j.message.ReusableParameterizedMessage
-
- All Implemented Interfaces:
java.io.Serializable
,Message
,ReusableMessage
,StringBuilderFormattable
public class ReusableParameterizedMessage extends java.lang.Object implements ReusableMessage
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
-
-
Constructor Summary
Constructors Constructor Description ReusableParameterizedMessage()
Creates a reusable message.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
formatTo(java.lang.StringBuilder builder)
Writes a text representation of this object into the specifiedStringBuilder
, ideally without allocating temporary objects.java.lang.String
getFormat()
Returns the message pattern.java.lang.String
getFormattedMessage()
Returns the formatted message.short
getParameterCount()
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.java.lang.Throwable
getThrowable()
Returns the Throwable that was given as the last argument, if any.Message
memento()
Returns an immutable snapshot of the current internal state of this reusable message.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.String
toString()
-
-
-
Method Detail
-
swapParameters
public java.lang.Object[] swapParameters(java.lang.Object[] emptyReplacement)
Description copied from interface:ReusableMessage
Returns 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:
swapParameters
in 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:ReusableMessage
Returns 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:
getParameterCount
in interfaceReusableMessage
- Returns:
- the current number of parameters
-
memento
public Message memento()
Description copied from interface:ReusableMessage
Returns 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:
memento
in interfaceReusableMessage
- Returns:
- an immutable snapshot of this message
-
getFormat
public java.lang.String getFormat()
Returns the message pattern.
-
getParameters
public java.lang.Object[] getParameters()
Returns the message parameters.- Specified by:
getParameters
in 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:
getThrowable
in interfaceMessage
- Returns:
- the Throwable, if any.
-
getFormattedMessage
public java.lang.String getFormattedMessage()
Returns the formatted message.- Specified by:
getFormattedMessage
in interfaceMessage
- Returns:
- the formatted message.
-
formatTo
public void formatTo(java.lang.StringBuilder builder)
Description copied from interface:StringBuilderFormattable
Writes a text representation of this object into the specifiedStringBuilder
, ideally without allocating temporary objects.- Specified by:
formatTo
in interfaceStringBuilderFormattable
- Parameters:
builder
- the StringBuilder to write into
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
-