public class CompactFormatter
extends java.util.logging.Formatter
By default each CompactFormatter is initialized using the following LogManager configuration properties where <formatter-name> refers to the fully qualified class name or the fully qualified derived class name of the formatter. If properties are not defined, or contain invalid values, then the specified default values are used.
Modifier and Type | Class and Description |
---|---|
private class |
CompactFormatter.Alternate
Used to format two arguments as fixed length message.
|
Modifier and Type | Field and Description |
---|---|
private java.lang.String |
fmt
Holds the java.util.Formatter pattern.
|
Constructor and Description |
---|
CompactFormatter()
Creates an instance with a default format pattern.
|
CompactFormatter(java.lang.String format)
Creates an instance with the given format pattern.
|
Modifier and Type | Method and Description |
---|---|
protected java.lang.Throwable |
apply(java.lang.Throwable t)
Chooses a single throwable from the cause chain that will be formatted.
|
private boolean |
defaultIgnore(java.lang.StackTraceElement s)
Determines if a stack frame should be ignored as the cause of an error.
|
private java.lang.String |
findAndFormat(java.lang.StackTraceElement[] trace)
Finds and formats the first stack frame of interest.
|
java.lang.String |
format(java.util.logging.LogRecord record)
Format the given log record and returns the formatted string.
|
java.lang.String |
formatBackTrace(java.util.logging.LogRecord record)
Formats the back trace for the given log record.
|
java.lang.String |
formatError(java.util.logging.LogRecord record)
Formats the thrown property of a LogRecord as an error message.
|
java.lang.String |
formatLevel(java.util.logging.LogRecord record)
Formats the level property of the given log record.
|
java.lang.String |
formatLoggerName(java.util.logging.LogRecord record)
Formats the logger name property of the given log record.
|
java.lang.String |
formatMessage(java.util.logging.LogRecord record)
Formats message for the log record.
|
java.lang.String |
formatMessage(java.lang.Throwable t)
Formats the message from the thrown property of the log record.
|
java.lang.String |
formatSource(java.util.logging.LogRecord record)
Formats the source from the given log record.
|
private java.lang.String |
formatStackTraceElement(java.lang.StackTraceElement s)
Formats a stack trace element into a simple call site.
|
java.lang.Number |
formatThreadID(java.util.logging.LogRecord record)
Formats the thread id property of the given log record.
|
java.lang.String |
formatThrown(java.util.logging.LogRecord record)
Formats the thrown property of a LogRecord.
|
private java.lang.Comparable<?> |
formatZonedDateTime(java.util.logging.LogRecord record)
Gets the zoned date time from the given log record.
|
protected boolean |
ignore(java.lang.StackTraceElement s)
Determines if a stack frame should be ignored as the cause of an error.
|
private java.lang.String |
initFormat(java.lang.String p)
Creates the format pattern for this formatter.
|
private static boolean |
isNullOrSpaces(java.lang.String s)
Determines is the given string is null or spaces.
|
private boolean |
isReflection(java.lang.StackTraceElement s)
Determines if a stack trace element represents a reflection frame.
|
private boolean |
isStaticUtility(java.lang.StackTraceElement s)
Determines if a stack frame is for a static utility class.
|
private boolean |
isSynthetic(java.lang.StackTraceElement s)
Determines if a stack trace element is for a synthetic method.
|
private boolean |
isUnknown(java.lang.StackTraceElement s)
Determines if a stack trace element has an unknown line number or a
native line number.
|
private static java.lang.Class<?>[] |
loadDeclaredClasses()
Used to load declared classes encase class loader doesn't allow loading
during JVM termination.
|
private static java.lang.String |
replaceClassName(java.lang.String msg,
java.lang.Object[] p)
Searches the given message for all instances fully qualified class name
with simple class name based off of the types contained in the given
parameter array.
|
private static java.lang.String |
replaceClassName(java.lang.String msg,
java.lang.Throwable t)
Searches the given message for all instances fully qualified class name
with simple class name based off of the types contained in the given
parameter array.
|
private static java.lang.String |
simpleClassName(java.lang.Class<?> k)
Gets the simple class name from the given class.
|
private static java.lang.String |
simpleClassName(java.lang.String name)
Converts a fully qualified class name to a simple class name.
|
private static java.lang.String |
simpleFileName(java.lang.String name)
Converts a file name with an extension to a file name without an
extension.
|
protected java.lang.String |
toAlternate(java.lang.String s)
Defines the alternate format.
|
public CompactFormatter()
public CompactFormatter(java.lang.String format)
format
- the pattern or null to use
the LogManager default. The arguments are described in the
format method.private static java.lang.Class<?>[] loadDeclaredClasses()
public java.lang.String format(java.util.logging.LogRecord record)
format
- the java.util.Formatter format string specified in the
<formatter-name>.format property or the format that was given when
this formatter was created.date
- if the log record supports nanoseconds then a
ZonedDateTime object representing the event time of the log record in the
system time zone. Otherwise, a Date object representing
event time of the log record.source
- a string representing the caller, if available;
otherwise, the logger's name.logger
- the logger's
simple
name.level
- the
log level.message
- the formatted log message returned from the
formatMessage(LogRecord) method.thrown
- a string representing the
throwable associated with the log record
and a relevant stack trace element if available; otherwise, an empty
string is used.message|thrown
The message and the thrown properties joined
as one parameter. This parameter supports
alternate form.thrown|message
The thrown and message properties joined as
one parameter. This parameter supports
alternate form.sequence
the
sequence number if the given
log record.thread id
the thread id
of the given log record. By default this is formatted as a long
by an unsigned conversion.error
the throwable
simple class name and
error message without any stack
trace.message|error
The message and error properties joined as one
parameter. This parameter supports
alternate form.error|message
The error and message properties joined as one
parameter. This parameter supports
alternate form.backtrace
only the
stack trace of the given
throwable.bundlename
the resource bundle
name of the given log
record.key
the raw message
before localization or formatting.
Some example formats:
com.sun.mail.util.logging.CompactFormatter.format=%7$#.160s%n
This prints only 160 characters of the message|thrown (7$
) using
the alternate form. The
separator is not included as part of the total width.
Encoding failed.|NullPointerException: null String.getBytes(:913)
com.sun.mail.util.logging.CompactFormatter.format=%7$#.20s%n
This prints only 20 characters of the message|thrown (7$
) using
the alternate form. This will
perform a weighted truncation of both the message and thrown properties
of the log record. The separator is not included as part of the total
width.
Encoding|NullPointerE
com.sun.mail.util.logging.CompactFormatter.format=%1$tc %2$s%n%4$s: %5$s%6$s%n
This prints the timestamp (1$
) and the source (2$
) on the
first line. The second line is the log level (4$
), log message
(5$
), and the throwable with a relevant stack trace element
(6$
) if one is available.
Fri Nov 20 07:29:24 CST 2009 MyClass fatal SEVERE: Encoding failed.NullPointerException: null String.getBytes(:913)
com.sun.mail.util.logging.CompactFormatter.format=%4$s: %12$#.160s%n
This prints the log level (4$
) and only 160 characters of the
message|error (12$
) using the alternate form.
SEVERE: Unable to send notification.|SocketException: Permission denied: connect
com.sun.mail.util.logging.CompactFormatter.format=[%9$d][%1$tT][%10$d][%2$s] %5$s%n%6$s%n
This prints the sequence (9$
), event time (1$
) as 24 hour
time, thread id (10$
), source (2$
), log message
(5$
), and the throwable with back trace (6$
).
[125][14:11:42][38][MyClass fatal] Unable to send notification. SocketException: Permission denied: connect SMTPTransport.openServer(:1949)
format
in class java.util.logging.Formatter
record
- the log record to format.java.lang.NullPointerException
- if the given record is null.public java.lang.String formatMessage(java.util.logging.LogRecord record)
formatMessage
in class java.util.logging.Formatter
record
- the log record.public java.lang.String formatMessage(java.lang.Throwable t)
t
- the throwable to format or null.public java.lang.String formatLevel(java.util.logging.LogRecord record)
record
- the record.java.lang.NullPointerException
- if the given record is null.public java.lang.String formatSource(java.util.logging.LogRecord record)
record
- the record.java.lang.NullPointerException
- if the given record is null.public java.lang.String formatLoggerName(java.util.logging.LogRecord record)
record
- the record.java.lang.NullPointerException
- if the given record is null.public java.lang.Number formatThreadID(java.util.logging.LogRecord record)
long
by an unsigned conversion.record
- the record.java.lang.NullPointerException
- if the given record is null.public java.lang.String formatThrown(java.util.logging.LogRecord record)
record
- the record.java.lang.NullPointerException
- if the given record is null.apply(java.lang.Throwable)
,
formatBackTrace(java.util.logging.LogRecord)
public java.lang.String formatError(java.util.logging.LogRecord record)
record
- the record.java.lang.NullPointerException
- if the given record is null.Throwable.toString()
,
apply(java.lang.Throwable)
,
formatMessage(java.lang.Throwable)
public java.lang.String formatBackTrace(java.util.logging.LogRecord record)
record
- the log record to format.java.lang.NullPointerException
- if the given record is null.apply(java.lang.Throwable)
,
formatThrown(java.util.logging.LogRecord)
,
ignore(java.lang.StackTraceElement)
private java.lang.String findAndFormat(java.lang.StackTraceElement[] trace)
trace
- the fill stack to examine.java.lang.NullPointerException
- if stack trace element array is null.private java.lang.String formatStackTraceElement(java.lang.StackTraceElement s)
s
- the stack trace element to format.java.lang.NullPointerException
- if stack trace element is null.formatThrown(java.util.logging.LogRecord)
protected java.lang.Throwable apply(java.lang.Throwable t)
t
- the throwable from the log record.formatThrown(java.util.logging.LogRecord)
protected boolean ignore(java.lang.StackTraceElement s)
s
- the stack trace element.formatThrown(java.util.logging.LogRecord)
protected java.lang.String toAlternate(java.lang.String s)
s
- any string or null.private java.lang.Comparable<?> formatZonedDateTime(java.util.logging.LogRecord record)
record
- the current log record.java.lang.NullPointerException
- if the given record is null.private boolean defaultIgnore(java.lang.StackTraceElement s)
s
- the stack trace element.private boolean isStaticUtility(java.lang.StackTraceElement s)
s
- the stack trace element.private boolean isSynthetic(java.lang.StackTraceElement s)
s
- the stack trace element.java.lang.NullPointerException
- if stack trace element is null.private boolean isUnknown(java.lang.StackTraceElement s)
s
- the stack trace element.java.lang.NullPointerException
- if stack trace element is null.private boolean isReflection(java.lang.StackTraceElement s)
s
- the stack trace element.java.lang.NullPointerException
- if stack trace element is null.private java.lang.String initFormat(java.lang.String p)
p
- the class name prefix.java.lang.NullPointerException
- if the given class name is null.private static java.lang.String replaceClassName(java.lang.String msg, java.lang.Throwable t)
msg
- the message.t
- the throwable cause chain to search or null.private static java.lang.String replaceClassName(java.lang.String msg, java.lang.Object[] p)
msg
- the message or null.p
- the parameter array or null.private static java.lang.String simpleClassName(java.lang.Class<?> k)
k
- the class object.private static java.lang.String simpleClassName(java.lang.String name)
name
- the fully qualified class name prefix or null.private static java.lang.String simpleFileName(java.lang.String name)
name
- the full file name or null.private static boolean isNullOrSpaces(java.lang.String s)
s
- the string or null.