com.ibm.websphere.logging.hpel.reader
Class HpelFormatter
- java.lang.Object
-
- com.ibm.websphere.logging.hpel.reader.HpelFormatter
-
public abstract class HpelFormatter extends java.lang.Object
Abstract class for formatters used to convert HPEL log records into a formatted string output. This class should be used for getting formatter instances.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class and Description protected class
HpelFormatter.CustomHeaderLine
Helper class representing one line of the customary defined header.
-
Field Summary
Fields Modifier and Type Field and Description protected HpelFormatter.CustomHeaderLine[]
customHeader
Set of lines to use in the custom header.protected static java.util.Map<java.util.logging.Level,java.lang.String>
customLevels
Map between level and it's one character id.protected java.text.DateFormat
dateFormat
static java.lang.String
FORMAT_ADVANCED
"Advanced" type format used in legacy text log filesstatic java.lang.String
FORMAT_BASIC
"Basic" type format used in legacy text log filesstatic java.lang.String
FORMAT_CBE101
Common Base Event Formatstatic java.lang.String
FORMAT_JSON
Json Formatprotected java.util.Properties
headerProps
protected java.lang.String
lineSeparator
protected java.util.Locale
locale
Locale this formatters uses for record messages and date formattingprotected static java.lang.String
nullParamString
protected java.util.TimeZone
timeZone
-
Constructor Summary
Constructors Constructor and Description HpelFormatter()
-
Method Summary
Methods Modifier and Type Method and Description static void
addCustomLevel(java.util.logging.Level level, java.lang.String id)
Adds level to be treated specially by this formatter.static java.util.logging.Level
addCustomLevel(java.lang.String name, int intValue, java.lang.String id, java.lang.String resourceBundleName)
Adds extra level recognizable by this formatter and Level.parse()protected abstract java.lang.String
appendUnusedParms(java.lang.String message, java.lang.Object[] args)
Add parameters to the end of a message based on policy indicated by unusedParmHandling parameter.static java.lang.Object[]
convertParameters(java.lang.Object[] parms)
Returns an array of parameters that matches the input parms except: Parameters that are empty strings are converted to "" (2 double quotes)java.lang.String
formatMessage(RepositoryLogRecord record, java.util.Locale tmpLocale)
Returns the formatted version of the record's message in a specified locale with any place holder parameters substituted with values.java.lang.String
formatRecord(java.util.logging.LogRecord record)
Formats a LogRecord using the formatter's localejava.lang.String
formatRecord(RepositoryLogRecord record)
Formats a RepositoryLogRecord using the formatter's localeabstract java.lang.String
formatRecord(RepositoryLogRecord record, java.util.Locale locale)
Formats a RepositoryLogRecord using the locale specified.protected static void
formatThreadID(RepositoryLogRecord r, java.lang.StringBuilder buffer)
protected java.lang.String
formatUnlocalized(java.lang.String traceString, java.lang.Object[] parms)
Used for WsLogRecords or CommonBaseEventLogRecords that specify REQUIRES_NO_LOCALIZATION, tries to format, and if unsuccessful in using any parameters appends them per unusedParmHandling.abstract java.lang.String
getFooter()
Gets the formatter's footer.static HpelFormatter
getFormatter(java.lang.String formatStyle)
Returns the HpelFormatter subclass instance to be used for formatting a RepositoryLogRecord.abstract java.lang.String[]
getHeader()
Gets the formatter's header.java.util.Properties
getHeaderProps()
Returns the Properties that is used to populate the formatter's header.java.lang.String
getLineSeparator()
java.util.Locale
getLocale()
Returns the formatter's locale that will be used to localize the log record's date timestamp and message.java.lang.String
getTimeZoneID()
Returns the ID of the time zone to be used in the formatted log record header timestampvoid
setCustomHeader(java.lang.String[] header)
sets new customer header format specificationvoid
setHeaderProps(java.util.Properties properties)
Sets the Properties that is used to populate the formatter's header.void
setLineSeparator(java.lang.String lineSeparator)
void
setLocale(java.util.Locale locale)
Sets the formatter locale that will be used to localize a log record being formatted.void
setStartDatetime(long datetime)
void
setTimeZoneID(java.lang.String timeZoneId)
Sets the ID of the time zone to be used in the formatted log record header timestampstatic java.lang.String
translateMessage(RepositoryLogRecord record, java.util.Locale tmpLocale)
protected static boolean
verifyTimeZoneID(java.lang.String timeZoneID)
-
-
-
Field Detail
-
FORMAT_BASIC
public static final java.lang.String FORMAT_BASIC
"Basic" type format used in legacy text log files- See Also:
- Constant Field Values
-
FORMAT_ADVANCED
public static final java.lang.String FORMAT_ADVANCED
"Advanced" type format used in legacy text log files- See Also:
- Constant Field Values
-
FORMAT_CBE101
public static final java.lang.String FORMAT_CBE101
Common Base Event Format- See Also:
- Constant Field Values
-
FORMAT_JSON
public static final java.lang.String FORMAT_JSON
Json Format- See Also:
- Constant Field Values
-
lineSeparator
protected java.lang.String lineSeparator
-
headerProps
protected java.util.Properties headerProps
-
locale
protected java.util.Locale locale
Locale this formatters uses for record messages and date formatting
-
timeZone
protected java.util.TimeZone timeZone
-
dateFormat
protected java.text.DateFormat dateFormat
-
nullParamString
protected static final java.lang.String nullParamString
- See Also:
- Constant Field Values
-
customLevels
protected static final java.util.Map<java.util.logging.Level,java.lang.String> customLevels
Map between level and it's one character id.
-
customHeader
protected HpelFormatter.CustomHeaderLine[] customHeader
Set of lines to use in the custom header.
-
-
Method Detail
-
getFormatter
public static HpelFormatter getFormatter(java.lang.String formatStyle)
Returns the HpelFormatter subclass instance to be used for formatting a RepositoryLogRecord. The formatter returned is based on the formatStyle requested.- Parameters:
formatStyle
- the style of the HpelFormatter instance to be returned. Valid values must match (case-insensitive)FORMAT_BASIC
,FORMAT_ADVANCED
, orFORMAT_CBE101
- Returns:
- a HpelFormatter instance that matches the requested formatter style
- Throws:
java.lang.IllegalArgumentException
- when the formatterName is invalid due to anull
value passed or a formatter name that is not recognized- See Also:
TimeZone
-
addCustomLevel
public static java.util.logging.Level addCustomLevel(java.lang.String name, int intValue, java.lang.String id, java.lang.String resourceBundleName)
Adds extra level recognizable by this formatter and Level.parse()- Parameters:
name
- name of the levelintValue
- integer value of the levelid
- one character id to use for this level. If it'snull
first character of the level name will be usedresourceBundleName
- resource bundle to use for level name translation- Returns:
- newly generated level instance
-
addCustomLevel
public static void addCustomLevel(java.util.logging.Level level, java.lang.String id)
Adds level to be treated specially by this formatter.- Parameters:
level
- level to be added to the special listid
- one character id to use for this level. If it'snull
first character of the level name will be used
-
setCustomHeader
public void setCustomHeader(java.lang.String[] header)
sets new customer header format specification- Parameters:
header
- array of Strings containing optional parameters with name of the header value to use in them. For example: "Java version: {java.version}".
-
getTimeZoneID
public java.lang.String getTimeZoneID()
Returns the ID of the time zone to be used in the formatted log record header timestamp- Returns:
- time zone ID
- See Also:
TimeZone
-
setTimeZoneID
public void setTimeZoneID(java.lang.String timeZoneId)
Sets the ID of the time zone to be used in the formatted log record header timestamp- Parameters:
timeZoneId
- new timeZoneID attribute value.- Throws:
java.lang.IllegalArgumentException
- when the time zone ID is not valid.
-
getLocale
public java.util.Locale getLocale()
Returns the formatter's locale that will be used to localize the log record's date timestamp and message.- Returns:
- the locale that will be used to localize the log record
-
setLocale
public void setLocale(java.util.Locale locale)
Sets the formatter locale that will be used to localize a log record being formatted. The formatter locale will be used whenformatRecord(RepositoryLogRecord)
is invoked. It is possible to format a log record with a locale other than one set by this method usingformatRecord(RepositoryLogRecord, Locale)
. the formatter locale will be set to the system locale until this method gets invoked.- Parameters:
locale
- the Locale to be used for localizing the log record,null
to disable message localization.
-
setHeaderProps
public void setHeaderProps(java.util.Properties properties)
Sets the Properties that is used to populate the formatter's header. This Properties used in the parameter should be a Properties returned from invoking ServerInstanceLogRecordList.getHeader().- See Also:
ServerInstanceLogRecordList
-
getHeaderProps
public java.util.Properties getHeaderProps()
Returns the Properties that is used to populate the formatter's header.
-
formatMessage
public java.lang.String formatMessage(RepositoryLogRecord record, java.util.Locale tmpLocale)
Returns the formatted version of the record's message in a specified locale with any place holder parameters substituted with values.In cases where localization is successful, the formatted message is the localized message with any place holder values filled in with corresponding parameter values.
In cases where the localized message is
null
, the formatted message is the raw message with any place holder values filled in with corresponding parameter values.This is the same behavior as found in
LogRecord.getMessage()
- Parameters:
record
- log record to read the message from.tmpLocale
- locale to translate message into.- Returns:
- the fully localized and formatted message.
- See Also:
LogRecord.getMessage()
-
convertParameters
public static java.lang.Object[] convertParameters(java.lang.Object[] parms)
Returns an array of parameters that matches the input parms except: Parameters that are empty strings are converted to "" (2 double quotes)- Parameters:
parms
-- Returns:
- Object[]
-
formatUnlocalized
protected java.lang.String formatUnlocalized(java.lang.String traceString, java.lang.Object[] parms)
Used for WsLogRecords or CommonBaseEventLogRecords that specify REQUIRES_NO_LOCALIZATION, tries to format, and if unsuccessful in using any parameters appends them per unusedParmHandling.- Returns:
- the formatted trace
-
appendUnusedParms
protected abstract java.lang.String appendUnusedParms(java.lang.String message, java.lang.Object[] args)
Add parameters to the end of a message based on policy indicated by unusedParmHandling parameter.- Parameters:
message
- Message to append arguments ontoargs
- Arguments to append to message- Returns:
- String new copy of message with parameters appended, or message itself if nothing was appended
-
translateMessage
public static java.lang.String translateMessage(RepositoryLogRecord record, java.util.Locale tmpLocale)
- Parameters:
record
- log record to read the message from.tmpLocale
- locale to translate message into.- Returns:
- the fully localized message.
-
formatRecord
public java.lang.String formatRecord(RepositoryLogRecord record)
Formats a RepositoryLogRecord using the formatter's locale- Parameters:
record
- log record to be formatted- Returns:
- the resulting formatted string output.
-
formatRecord
public abstract java.lang.String formatRecord(RepositoryLogRecord record, java.util.Locale locale)
Formats a RepositoryLogRecord using the locale specified.- Parameters:
record
- the RepositoryLogRecord to be formattedlocale
- the locale to use when formatting this record.- Returns:
- the formatted RepositoryLogRecord as string output.
-
formatRecord
public java.lang.String formatRecord(java.util.logging.LogRecord record)
Formats a LogRecord using the formatter's locale- Parameters:
record
- log record to be formatted- Returns:
- the resulting formatted string output.
-
getHeader
public abstract java.lang.String[] getHeader()
Gets the formatter's header. This method will return an empty array if the formatter does not have a header as part of the formatter's format style return the header as an array of strings
-
getFooter
public abstract java.lang.String getFooter()
Gets the formatter's footer. This method will return an empty string if the formatter does not have a footer as part of the formatter's format style.- Returns:
- the footer as a string
-
verifyTimeZoneID
protected static boolean verifyTimeZoneID(java.lang.String timeZoneID)
-
formatThreadID
protected static void formatThreadID(RepositoryLogRecord r, java.lang.StringBuilder buffer)
-
getLineSeparator
public java.lang.String getLineSeparator()
-
setLineSeparator
public void setLineSeparator(java.lang.String lineSeparator)
-
setStartDatetime
public void setStartDatetime(long datetime)
-
-