Package org.apache.logging.log4j.message
Class StructuredDataMessage
- java.lang.Object
-
- org.apache.logging.log4j.message.MapMessage<StructuredDataMessage,java.lang.String>
-
- org.apache.logging.log4j.message.StructuredDataMessage
-
- All Implemented Interfaces:
java.io.Serializable
,Message
,MultiformatMessage
,org.apache.logging.log4j.util.MultiFormatStringBuilderFormattable
,org.apache.logging.log4j.util.StringBuilderFormattable
@AsynchronouslyFormattable public class StructuredDataMessage extends MapMessage<StructuredDataMessage,java.lang.String>
Represents a Message that conforms to an RFC 5424 StructuredData element along with the syslog message.Thread-safety note: the contents of this message can be modified after construction. When using asynchronous loggers and appenders it is not recommended to modify this message after the message is logged, because it is undefined whether the logged message string will contain the old values or the modified values.
- See Also:
- RFC 5424, Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
StructuredDataMessage.Format
Supported formats.-
Nested classes/interfaces inherited from class org.apache.logging.log4j.message.MapMessage
MapMessage.MapFormat
-
-
Constructor Summary
Constructors Constructor Description StructuredDataMessage(java.lang.String id, java.lang.String msg, java.lang.String type)
Creates a StructuredDataMessage using an ID (max 32 characters), message, and type (max 32 characters).StructuredDataMessage(java.lang.String id, java.lang.String msg, java.lang.String type, int maxLength)
Creates a StructuredDataMessage using an ID (user specified max characters), message, and type (user specified maximum number of characters).StructuredDataMessage(java.lang.String id, java.lang.String msg, java.lang.String type, java.util.Map<java.lang.String,java.lang.String> data)
Creates a StructuredDataMessage using an ID (max 32 characters), message, type (max 32 characters), and an initial map of structured data to include.StructuredDataMessage(java.lang.String id, java.lang.String msg, java.lang.String type, java.util.Map<java.lang.String,java.lang.String> data, int maxLength)
Creates a StructuredDataMessage using an (user specified max characters), message, and type (user specified maximum number of characters, and an initial map of structured data to include.StructuredDataMessage(StructuredDataId id, java.lang.String msg, java.lang.String type)
Creates a StructuredDataMessage using a StructuredDataId, message, and type (max 32 characters).StructuredDataMessage(StructuredDataId id, java.lang.String msg, java.lang.String type, int maxLength)
Creates a StructuredDataMessage using a StructuredDataId, message, and type (max 32 characters).StructuredDataMessage(StructuredDataId id, java.lang.String msg, java.lang.String type, java.util.Map<java.lang.String,java.lang.String> data)
Creates a StructuredDataMessage using a StructuredDataId, message, type (max 32 characters), and an initial map of structured data to include.StructuredDataMessage(StructuredDataId id, java.lang.String msg, java.lang.String type, java.util.Map<java.lang.String,java.lang.String> data, int maxLength)
Creates a StructuredDataMessage using a StructuredDataId, message, type (max 32 characters), and an initial map of structured data to include.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.lang.String
asString()
Formats the structured data as described in RFC 5424.java.lang.String
asString(java.lang.String format)
Formats the structured data as described in RFC 5424.java.lang.String
asString(StructuredDataMessage.Format format, StructuredDataId structuredDataId)
Formats the structured data as described in RFC 5424.void
asString(StructuredDataMessage.Format format, StructuredDataId structuredDataId, java.lang.StringBuilder sb)
Formats the structured data as described in RFC 5424.boolean
equals(java.lang.Object o)
void
formatTo(java.lang.String[] formats, java.lang.StringBuilder buffer)
void
formatTo(java.lang.StringBuilder buffer)
java.lang.String
getFormat()
Returns the message.java.lang.String[]
getFormats()
Returns the supported formats.java.lang.String
getFormattedMessage()
Formats the message and return it.java.lang.String
getFormattedMessage(java.lang.String[] formats)
Formats the message according to the specified format.StructuredDataId
getId()
Returns this message id.java.lang.String
getType()
Returns this message type.int
hashCode()
StructuredDataMessage
newInstance(java.util.Map<java.lang.String,java.lang.String> map)
Constructs a new instance based on an existing Map.java.lang.String
toString()
-
Methods inherited from class org.apache.logging.log4j.message.MapMessage
asXml, clear, containsKey, forEach, forEach, get, getData, getIndexedReadOnlyStringMap, getParameters, getThrowable, put, putAll, remove, with, with, with, with, with, with, with, with, with, with
-
-
-
-
Constructor Detail
-
StructuredDataMessage
public StructuredDataMessage(java.lang.String id, java.lang.String msg, java.lang.String type)
Creates a StructuredDataMessage using an ID (max 32 characters), message, and type (max 32 characters).- Parameters:
id
- The String id.msg
- The message.type
- The message type.
-
StructuredDataMessage
public StructuredDataMessage(java.lang.String id, java.lang.String msg, java.lang.String type, int maxLength)
Creates a StructuredDataMessage using an ID (user specified max characters), message, and type (user specified maximum number of characters).- Parameters:
id
- The String id.msg
- The message.type
- The message type.maxLength
- The maximum length of keys;- Since:
- 2.9
-
StructuredDataMessage
public StructuredDataMessage(java.lang.String id, java.lang.String msg, java.lang.String type, java.util.Map<java.lang.String,java.lang.String> data)
Creates a StructuredDataMessage using an ID (max 32 characters), message, type (max 32 characters), and an initial map of structured data to include.- Parameters:
id
- The String id.msg
- The message.type
- The message type.data
- The StructuredData map.
-
StructuredDataMessage
public StructuredDataMessage(java.lang.String id, java.lang.String msg, java.lang.String type, java.util.Map<java.lang.String,java.lang.String> data, int maxLength)
Creates a StructuredDataMessage using an (user specified max characters), message, and type (user specified maximum number of characters, and an initial map of structured data to include.- Parameters:
id
- The String id.msg
- The message.type
- The message type.data
- The StructuredData map.maxLength
- The maximum length of keys;- Since:
- 2.9
-
StructuredDataMessage
public StructuredDataMessage(StructuredDataId id, java.lang.String msg, java.lang.String type)
Creates a StructuredDataMessage using a StructuredDataId, message, and type (max 32 characters).- Parameters:
id
- The StructuredDataId.msg
- The message.type
- The message type.
-
StructuredDataMessage
public StructuredDataMessage(StructuredDataId id, java.lang.String msg, java.lang.String type, int maxLength)
Creates a StructuredDataMessage using a StructuredDataId, message, and type (max 32 characters).- Parameters:
id
- The StructuredDataId.msg
- The message.type
- The message type.maxLength
- The maximum length of keys;- Since:
- 2.9
-
StructuredDataMessage
public StructuredDataMessage(StructuredDataId id, java.lang.String msg, java.lang.String type, java.util.Map<java.lang.String,java.lang.String> data)
Creates a StructuredDataMessage using a StructuredDataId, message, type (max 32 characters), and an initial map of structured data to include.- Parameters:
id
- The StructuredDataId.msg
- The message.type
- The message type.data
- The StructuredData map.
-
StructuredDataMessage
public StructuredDataMessage(StructuredDataId id, java.lang.String msg, java.lang.String type, java.util.Map<java.lang.String,java.lang.String> data, int maxLength)
Creates a StructuredDataMessage using a StructuredDataId, message, type (max 32 characters), and an initial map of structured data to include.- Parameters:
id
- The StructuredDataId.msg
- The message.type
- The message type.data
- The StructuredData map.maxLength
- The maximum length of keys;- Since:
- 2.9
-
-
Method Detail
-
getFormats
public java.lang.String[] getFormats()
Returns the supported formats.- Specified by:
getFormats
in interfaceMultiformatMessage
- Overrides:
getFormats
in classMapMessage<StructuredDataMessage,java.lang.String>
- Returns:
- An array of the supported format names.
-
getId
public StructuredDataId getId()
Returns this message id.- Returns:
- the StructuredDataId.
-
getType
public java.lang.String getType()
Returns this message type.- Returns:
- the type.
-
formatTo
public void formatTo(java.lang.StringBuilder buffer)
- Specified by:
formatTo
in interfaceorg.apache.logging.log4j.util.StringBuilderFormattable
- Overrides:
formatTo
in classMapMessage<StructuredDataMessage,java.lang.String>
-
formatTo
public void formatTo(java.lang.String[] formats, java.lang.StringBuilder buffer)
- Specified by:
formatTo
in interfaceorg.apache.logging.log4j.util.MultiFormatStringBuilderFormattable
- Overrides:
formatTo
in classMapMessage<StructuredDataMessage,java.lang.String>
-
getFormat
public java.lang.String getFormat()
Returns the message.- Specified by:
getFormat
in interfaceMessage
- Overrides:
getFormat
in classMapMessage<StructuredDataMessage,java.lang.String>
- Returns:
- the message.
-
asString
public java.lang.String asString()
Formats the structured data as described in RFC 5424.- Overrides:
asString
in classMapMessage<StructuredDataMessage,java.lang.String>
- Returns:
- The formatted String.
-
asString
public java.lang.String asString(java.lang.String format)
Formats the structured data as described in RFC 5424.- Overrides:
asString
in classMapMessage<StructuredDataMessage,java.lang.String>
- Parameters:
format
- The format identifier. Ignored in this implementation.- Returns:
- The formatted String.
-
asString
public final java.lang.String asString(StructuredDataMessage.Format format, StructuredDataId structuredDataId)
Formats the structured data as described in RFC 5424.- Parameters:
format
- "full" will include the type and message. null will return only the STRUCTURED-DATA as described in RFC 5424structuredDataId
- The SD-ID as described in RFC 5424. If null the value in the StructuredData will be used.- Returns:
- The formatted String.
-
asString
public final void asString(StructuredDataMessage.Format format, StructuredDataId structuredDataId, java.lang.StringBuilder sb)
Formats the structured data as described in RFC 5424.- Parameters:
format
- "full" will include the type and message. null will return only the STRUCTURED-DATA as described in RFC 5424structuredDataId
- The SD-ID as described in RFC 5424. If null the value in the StructuredData will be used.sb
- The StringBuilder to append the formatted message to.
-
getFormattedMessage
public java.lang.String getFormattedMessage()
Formats the message and return it.- Specified by:
getFormattedMessage
in interfaceMessage
- Overrides:
getFormattedMessage
in classMapMessage<StructuredDataMessage,java.lang.String>
- Returns:
- the formatted message.
-
getFormattedMessage
public java.lang.String getFormattedMessage(java.lang.String[] formats)
Formats the message according to the specified format.- Specified by:
getFormattedMessage
in interfaceMultiformatMessage
- Overrides:
getFormattedMessage
in classMapMessage<StructuredDataMessage,java.lang.String>
- Parameters:
formats
- An array of Strings that provide extra information about how to format the message. StructuredDataMessage accepts only a format of "FULL" which will cause the event type to be prepended and the event message to be appended. Specifying any other value will cause only the StructuredData to be included. The default is "FULL".- Returns:
- the formatted message.
-
toString
public java.lang.String toString()
- Overrides:
toString
in classMapMessage<StructuredDataMessage,java.lang.String>
-
newInstance
public StructuredDataMessage newInstance(java.util.Map<java.lang.String,java.lang.String> map)
Description copied from class:MapMessage
Constructs a new instance based on an existing Map.- Overrides:
newInstance
in classMapMessage<StructuredDataMessage,java.lang.String>
- Parameters:
map
- The Map.- Returns:
- A new MapMessage
-
equals
public boolean equals(java.lang.Object o)
- Overrides:
equals
in classMapMessage<StructuredDataMessage,java.lang.String>
-
hashCode
public int hashCode()
- Overrides:
hashCode
in classMapMessage<StructuredDataMessage,java.lang.String>
-
-