org.apache.logging.log4j.message
Class StructuredDataMessage

java.lang.Object
  extended by org.apache.logging.log4j.message.MapMessage
      extended by org.apache.logging.log4j.message.StructuredDataMessage
All Implemented Interfaces:
Serializable, Message, MultiformatMessage

public class StructuredDataMessage
extends MapMessage

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
static class StructuredDataMessage.Format
          Supported formats.
 
Nested classes/interfaces inherited from class org.apache.logging.log4j.message.MapMessage
MapMessage.MapFormat
 
Constructor Summary
protected StructuredDataMessage()
          Basic constructor.
  StructuredDataMessage(String id, String msg, String type)
          Creates a StructuredDataMessage using an ID (max 32 characters), message, and type (max 32 characters).
  StructuredDataMessage(String id, String msg, String type, Map<String,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(StructuredDataId id, String msg, String type)
          Creates a StructuredDataMessage using a StructuredDataId, message, and type (max 32 characters).
  StructuredDataMessage(StructuredDataId id, String msg, String type, Map<String,String> data)
          Creates a StructuredDataMessage using a StructuredDataId, message, type (max 32 characters), and an initial map of structured data to include.
 
Method Summary
 String asString()
          Formats the structured data as described in RFC 5424.
 String asString(String format)
          Formats the structured data as described in RFC 5424.
 String asString(StructuredDataMessage.Format format, StructuredDataId structuredDataId)
          Formats the structured data as described in RFC 5424.
 boolean equals(Object o)
           
 String getFormat()
          Returns the message.
 String[] getFormats()
          Returns the supported formats.
 String getFormattedMessage()
          Formats the message and return it.
 String getFormattedMessage(String[] formats)
          Formats the message according the the specified format.
 StructuredDataId getId()
          Returns this message id.
 String getType()
          Returns this message type.
 int hashCode()
           
 MapMessage newInstance(Map<String,String> map)
           
protected  void setId(String id)
          Sets the id from a String.
protected  void setId(StructuredDataId id)
          Sets the id.
protected  void setMessageFormat(String msg)
           
protected  void setType(String type)
           
 String toString()
           
protected  void validate(String key, String value)
           
 
Methods inherited from class org.apache.logging.log4j.message.MapMessage
appendMap, asJava, asJson, asXml, clear, get, getData, getParameters, getThrowable, put, putAll, remove
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Constructor Detail

StructuredDataMessage

public StructuredDataMessage(String id,
                             String msg,
                             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(String id,
                             String msg,
                             String type,
                             Map<String,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(StructuredDataId id,
                             String msg,
                             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,
                             String msg,
                             String type,
                             Map<String,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

protected StructuredDataMessage()
Basic constructor.

Method Detail

getFormats

public String[] getFormats()
Returns the supported formats.

Specified by:
getFormats in interface MultiformatMessage
Overrides:
getFormats in class MapMessage
Returns:
An array of the supported format names.

getId

public StructuredDataId getId()
Returns this message id.

Returns:
the StructuredDataId.

setId

protected void setId(String id)
Sets the id from a String. This ID can be at most 32 characters long.

Parameters:
id - The String id.

setId

protected void setId(StructuredDataId id)
Sets the id.

Parameters:
id - The StructuredDataId.

getType

public String getType()
Returns this message type.

Returns:
the type.

setType

protected void setType(String type)

getFormat

public String getFormat()
Returns the message.

Specified by:
getFormat in interface Message
Overrides:
getFormat in class MapMessage
Returns:
the message.

setMessageFormat

protected void setMessageFormat(String msg)

validate

protected void validate(String key,
                        String value)
Overrides:
validate in class MapMessage

asString

public String asString()
Formats the structured data as described in RFC 5424.

Overrides:
asString in class MapMessage
Returns:
The formatted String.

asString

public String asString(String format)
Formats the structured data as described in RFC 5424.

Overrides:
asString in class MapMessage
Parameters:
format - The format identifier. Ignored in this implementation.
Returns:
The formatted String.

asString

public final 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 5424
structuredDataId - The SD-ID as described in RFC 5424. If null the value in the StructuredData will be used.
Returns:
The formatted String.

getFormattedMessage

public String getFormattedMessage()
Formats the message and return it.

Specified by:
getFormattedMessage in interface Message
Overrides:
getFormattedMessage in class MapMessage
Returns:
the formatted message.

getFormattedMessage

public String getFormattedMessage(String[] formats)
Formats the message according the the specified format.

Specified by:
getFormattedMessage in interface MultiformatMessage
Overrides:
getFormattedMessage in class MapMessage
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 String toString()
Overrides:
toString in class MapMessage

newInstance

public MapMessage newInstance(Map<String,String> map)
Overrides:
newInstance in class MapMessage

equals

public boolean equals(Object o)
Overrides:
equals in class MapMessage

hashCode

public int hashCode()
Overrides:
hashCode in class MapMessage


Copyright © 1999-2015 Apache Software Foundation. All Rights Reserved.
Apache Logging, Apache Log4j, Log4j, Apache, the Apache feather logo, the Apache Logging project logo, and the Apache Log4j logo are trademarks of The Apache Software Foundation.