org.apache.log.format

Class PatternFormatter

Implemented Interfaces:
Formatter
Known Direct Subclasses:
ExtendedPatternFormatter

public class PatternFormatter
extends java.lang.Object
implements Formatter

This formater formats the LogEvents according to a input pattern string.

The format of each pattern element can be %[+|-][#[.#]]{field:subformat}.

A simple example of a typical PatternFormatter format would be:


   %{time} %5.5{priority}[%-10.10{category}]: %{message}
 

This would produce a line like:


   1000928827905 DEBUG [     junit]: Sample message
 

The format string specifies that the logger should first print the time value of the log event without size restriction, then the priority of the log event with a minimum and maximum size of 5, then the category of the log event right justified with a minimum and maximum size of 10, followed by the message of the log event without any size restriction.

Version:
$Id: PatternFormatter.java 30977 2004-07-30 03:57:54 -0500 (Fri, 30 Jul 2004) niclas $
Authors:
Avalon Development Team
Peter Donald
Sylvain Wallez
Leif Mortenson

Nested Class Summary

protected static class
PatternFormatter.PatternRun

Field Summary

private static String
EOL
protected static int
MAX_TYPE
The maximum value used for TYPEs.
private static String
SPACE_1
private static String
SPACE_16
private static String
SPACE_2
private static String
SPACE_4
private static String
SPACE_8
private static int
TYPE_CATEGORY
private static String
TYPE_CATEGORY_STR
private static int
TYPE_CONTEXT
private static String
TYPE_CONTEXT_STR
private static int
TYPE_MESSAGE
private static String
TYPE_MESSAGE_STR
private static int
TYPE_PRIORITY
private static String
TYPE_PRIORITY_STR
private static int
TYPE_RELATIVE_TIME
private static String
TYPE_RELATIVE_TIME_STR
private static int
TYPE_TEXT
private static int
TYPE_THREAD
private static String
TYPE_THREAD_STR
private static int
TYPE_THROWABLE
private static String
TYPE_THROWABLE_STR
private static int
TYPE_TIME
private static String
TYPE_TIME_STR
private Date
m_date
private PatternFormatter.PatternRun[]
m_formatSpecification
private SimpleDateFormat
m_simpleDateFormat

Constructor Summary

PatternFormatter(String pattern)
Creation of a new patter formatter baseed on a supplied pattern.

Method Summary

private int
addPatternRun(Stack stack, pattern[] , int index)
Extract and build a pattern from input string.
private int
addTextRun(Stack stack, pattern[] , int index)
Extract and build a text run from input string.
private void
append(StringBuffer sb, int minSize, int maxSize, boolean rightJustify, String output)
Utility to append a string to buffer given certain constraints.
private void
appendWhiteSpace(StringBuffer sb, int length)
Append a certain number of whitespace characters to a StringBuffer.
String
format(LogEvent event)
Format the event according to the pattern.
protected String
formatPatternRun(LogEvent event, PatternFormatter.PatternRun run)
Formats a single pattern run (can be extended in subclasses).
protected String
getCategory(String category, String format)
Utility method to format category.
protected String
getContextMap(ContextMap map, String format)
Utility method to format context map.
protected String
getMessage(String message, String format)
Utility method to format message.
protected String
getPriority(Priority priority, String format)
Get formatted priority string.
protected String
getRTime(long time, String format)
Utility method to format relative time.
protected String
getStackTrace(Throwable throwable, String format)
Utility method to format stack trace.
protected String
getThread(String format)
Get formatted thread string.
protected String
getTime(long time, String format)
Utility method to format time.
protected int
getTypeIdFor(String type)
Retrieve the type-id for a particular string.
protected void
parse(String patternString)
Parse the input pattern and build internal data structures.

Field Details

EOL

private static final String EOL

MAX_TYPE

protected static final int MAX_TYPE
The maximum value used for TYPEs. Subclasses can define their own TYPEs starting at MAX_TYPE + 1.
Field Value:
8

SPACE_1

private static final String SPACE_1

SPACE_16

private static final String SPACE_16

SPACE_2

private static final String SPACE_2

SPACE_4

private static final String SPACE_4

SPACE_8

private static final String SPACE_8

TYPE_CATEGORY

private static final int TYPE_CATEGORY
Field Value:
2

TYPE_CATEGORY_STR

private static final String TYPE_CATEGORY_STR

TYPE_CONTEXT

private static final int TYPE_CONTEXT
Field Value:
3

TYPE_CONTEXT_STR

private static final String TYPE_CONTEXT_STR

TYPE_MESSAGE

private static final int TYPE_MESSAGE
Field Value:
4

TYPE_MESSAGE_STR

private static final String TYPE_MESSAGE_STR

TYPE_PRIORITY

private static final int TYPE_PRIORITY
Field Value:
8

TYPE_PRIORITY_STR

private static final String TYPE_PRIORITY_STR

TYPE_RELATIVE_TIME

private static final int TYPE_RELATIVE_TIME
Field Value:
6

TYPE_RELATIVE_TIME_STR

private static final String TYPE_RELATIVE_TIME_STR

TYPE_TEXT

private static final int TYPE_TEXT
Field Value:
1

TYPE_THREAD

private static final int TYPE_THREAD
Field Value:
9

TYPE_THREAD_STR

private static final String TYPE_THREAD_STR

TYPE_THROWABLE

private static final int TYPE_THROWABLE
Field Value:
7

TYPE_THROWABLE_STR

private static final String TYPE_THROWABLE_STR

TYPE_TIME

private static final int TYPE_TIME
Field Value:
5

TYPE_TIME_STR

private static final String TYPE_TIME_STR

m_date

private final Date m_date

m_formatSpecification

private PatternFormatter.PatternRun[] m_formatSpecification

m_simpleDateFormat

private SimpleDateFormat m_simpleDateFormat

Constructor Details

PatternFormatter

public PatternFormatter(String pattern)
Creation of a new patter formatter baseed on a supplied pattern.
Parameters:
pattern - the patter

Method Details

addPatternRun

private int addPatternRun(Stack stack,
                          pattern[] ,
                          int index)
Extract and build a pattern from input string.
Parameters:
stack - the stack on which to place patterns
index - the start of pattern run
Returns:
the number of characters in pattern run

addTextRun

private int addTextRun(Stack stack,
                       pattern[] ,
                       int index)
Extract and build a text run from input string. It does special handling of '\n' and '\t' replaceing them with newline and tab.
Parameters:
stack - the stack on which to place runs
index - the start of the text run
Returns:
the number of characters in run

append

private void append(StringBuffer sb,
                    int minSize,
                    int maxSize,
                    boolean rightJustify,
                    String output)
Utility to append a string to buffer given certain constraints.
Parameters:
sb - the StringBuffer
minSize - the minimum size of output (0 to ignore)
maxSize - the maximum size of output (0 to ignore)
rightJustify - true if the string is to be right justified in it's box.
output - the input string

appendWhiteSpace

private void appendWhiteSpace(StringBuffer sb,
                              int length)
Append a certain number of whitespace characters to a StringBuffer.
Parameters:
sb - the StringBuffer
length - the number of spaces to append

format

public String format(LogEvent event)
Format the event according to the pattern.
Specified by:
format in interface Formatter
Parameters:
event - the event
Returns:
the formatted output

formatPatternRun

protected String formatPatternRun(LogEvent event,
                                  PatternFormatter.PatternRun run)
Formats a single pattern run (can be extended in subclasses).
Parameters:
run - the pattern run to format.
Returns:
the formatted result.

getCategory

protected String getCategory(String category,
                             String format)
Utility method to format category.
Parameters:
category - the category string
format - ancilliary format parameter - allowed to be null
Returns:
the formatted string

getContextMap

protected String getContextMap(ContextMap map,
                               String format)
Utility method to format context map.
Parameters:
map - the context map
format - ancilliary format parameter - allowed to be null
Returns:
the formatted string

getMessage

protected String getMessage(String message,
                            String format)
Utility method to format message.
Parameters:
message - the message string
format - ancilliary format parameter - allowed to be null
Returns:
the formatted string

getPriority

protected String getPriority(Priority priority,
                             String format)
Get formatted priority string.

getRTime

protected String getRTime(long time,
                          String format)
Utility method to format relative time.
Parameters:
time - the time
format - ancilliary format parameter - allowed to be null
Returns:
the formatted string

getStackTrace

protected String getStackTrace(Throwable throwable,
                               String format)
Utility method to format stack trace.
Parameters:
throwable - the throwable instance
format - ancilliary format parameter - allowed to be null
Returns:
the formatted string

getThread

protected String getThread(String format)
Get formatted thread string.

getTime

protected String getTime(long time,
                         String format)
Utility method to format time.
Parameters:
time - the time
format - ancilliary format parameter - allowed to be null
Returns:
the formatted string

getTypeIdFor

protected int getTypeIdFor(String type)
Retrieve the type-id for a particular string.
Parameters:
type - the string
Returns:
the type-id

parse

protected final void parse(String patternString)
Parse the input pattern and build internal data structures.
Parameters:
patternString - the pattern