org.apache.log.format
Class PatternFormatter

java.lang.Object
  extended byorg.apache.log.format.PatternFormatter
All Implemented Interfaces:
Formatter
Direct Known 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 $
Author:
Avalon Development Team, Peter Donald, Sylvain Wallez, Leif Mortenson

Nested Class Summary
protected static class PatternFormatter.PatternRun
           
 
Field Summary
private static java.lang.String EOL
           
private  java.util.Date m_date
           
private  PatternFormatter.PatternRun[] m_formatSpecification
           
private  java.text.SimpleDateFormat m_simpleDateFormat
           
protected static int MAX_TYPE
          The maximum value used for TYPEs.
private static java.lang.String SPACE_1
           
private static java.lang.String SPACE_16
           
private static java.lang.String SPACE_2
           
private static java.lang.String SPACE_4
           
private static java.lang.String SPACE_8
           
private static int TYPE_CATEGORY
           
private static java.lang.String TYPE_CATEGORY_STR
           
private static int TYPE_CONTEXT
           
private static java.lang.String TYPE_CONTEXT_STR
           
private static int TYPE_MESSAGE
           
private static java.lang.String TYPE_MESSAGE_STR
           
private static int TYPE_PRIORITY
           
private static java.lang.String TYPE_PRIORITY_STR
           
private static int TYPE_RELATIVE_TIME
           
private static java.lang.String TYPE_RELATIVE_TIME_STR
           
private static int TYPE_TEXT
           
private static int TYPE_THREAD
           
private static java.lang.String TYPE_THREAD_STR
           
private static int TYPE_THROWABLE
           
private static java.lang.String TYPE_THROWABLE_STR
           
private static int TYPE_TIME
           
private static java.lang.String TYPE_TIME_STR
           
 
Constructor Summary
PatternFormatter(java.lang.String pattern)
          Creation of a new patter formatter baseed on a supplied pattern.
 
Method Summary
private  int addPatternRun(java.util.Stack stack, char[] pattern, int index)
          Extract and build a pattern from input string.
private  int addTextRun(java.util.Stack stack, char[] pattern, int index)
          Extract and build a text run from input string.
private  void append(java.lang.StringBuffer sb, int minSize, int maxSize, boolean rightJustify, java.lang.String output)
          Utility to append a string to buffer given certain constraints.
private  void appendWhiteSpace(java.lang.StringBuffer sb, int length)
          Append a certain number of whitespace characters to a StringBuffer.
 java.lang.String format(LogEvent event)
          Format the event according to the pattern.
protected  java.lang.String formatPatternRun(LogEvent event, PatternFormatter.PatternRun run)
          Formats a single pattern run (can be extended in subclasses).
protected  java.lang.String getCategory(java.lang.String category, java.lang.String format)
          Utility method to format category.
protected  java.lang.String getContextMap(ContextMap map, java.lang.String format)
          Utility method to format context map.
protected  java.lang.String getMessage(java.lang.String message, java.lang.String format)
          Utility method to format message.
protected  java.lang.String getPriority(Priority priority, java.lang.String format)
          Get formatted priority string.
protected  java.lang.String getRTime(long time, java.lang.String format)
          Utility method to format relative time.
protected  java.lang.String getStackTrace(java.lang.Throwable throwable, java.lang.String format)
          Utility method to format stack trace.
protected  java.lang.String getThread(java.lang.String format)
          Get formatted thread string.
protected  java.lang.String getTime(long time, java.lang.String format)
          Utility method to format time.
protected  int getTypeIdFor(java.lang.String type)
          Retrieve the type-id for a particular string.
protected  void parse(java.lang.String patternString)
          Parse the input pattern and build internal data structures.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

TYPE_TEXT

private static final int TYPE_TEXT
See Also:
Constant Field Values

TYPE_CATEGORY

private static final int TYPE_CATEGORY
See Also:
Constant Field Values

TYPE_CONTEXT

private static final int TYPE_CONTEXT
See Also:
Constant Field Values

TYPE_MESSAGE

private static final int TYPE_MESSAGE
See Also:
Constant Field Values

TYPE_TIME

private static final int TYPE_TIME
See Also:
Constant Field Values

TYPE_RELATIVE_TIME

private static final int TYPE_RELATIVE_TIME
See Also:
Constant Field Values

TYPE_THROWABLE

private static final int TYPE_THROWABLE
See Also:
Constant Field Values

TYPE_PRIORITY

private static final int TYPE_PRIORITY
See Also:
Constant Field Values

TYPE_THREAD

private static final int TYPE_THREAD
See Also:
Constant Field Values

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.

See Also:
Constant Field Values

TYPE_CATEGORY_STR

private static final java.lang.String TYPE_CATEGORY_STR
See Also:
Constant Field Values

TYPE_CONTEXT_STR

private static final java.lang.String TYPE_CONTEXT_STR
See Also:
Constant Field Values

TYPE_MESSAGE_STR

private static final java.lang.String TYPE_MESSAGE_STR
See Also:
Constant Field Values

TYPE_TIME_STR

private static final java.lang.String TYPE_TIME_STR
See Also:
Constant Field Values

TYPE_RELATIVE_TIME_STR

private static final java.lang.String TYPE_RELATIVE_TIME_STR
See Also:
Constant Field Values

TYPE_THROWABLE_STR

private static final java.lang.String TYPE_THROWABLE_STR
See Also:
Constant Field Values

TYPE_PRIORITY_STR

private static final java.lang.String TYPE_PRIORITY_STR
See Also:
Constant Field Values

TYPE_THREAD_STR

private static final java.lang.String TYPE_THREAD_STR
See Also:
Constant Field Values

SPACE_16

private static final java.lang.String SPACE_16
See Also:
Constant Field Values

SPACE_8

private static final java.lang.String SPACE_8
See Also:
Constant Field Values

SPACE_4

private static final java.lang.String SPACE_4
See Also:
Constant Field Values

SPACE_2

private static final java.lang.String SPACE_2
See Also:
Constant Field Values

SPACE_1

private static final java.lang.String SPACE_1
See Also:
Constant Field Values

EOL

private static final java.lang.String EOL

m_formatSpecification

private PatternFormatter.PatternRun[] m_formatSpecification

m_simpleDateFormat

private java.text.SimpleDateFormat m_simpleDateFormat

m_date

private final java.util.Date m_date
Constructor Detail

PatternFormatter

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

Parameters:
pattern - the patter
Method Detail

addPatternRun

private int addPatternRun(java.util.Stack stack,
                          char[] pattern,
                          int index)
Extract and build a pattern from input string.

Parameters:
stack - the stack on which to place patterns
pattern - the input string
index - the start of pattern run
Returns:
the number of characters in pattern run

addTextRun

private int addTextRun(java.util.Stack stack,
                       char[] 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
pattern - the input string
index - the start of the text run
Returns:
the number of characters in run

append

private void append(java.lang.StringBuffer sb,
                    int minSize,
                    int maxSize,
                    boolean rightJustify,
                    java.lang.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(java.lang.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 java.lang.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 java.lang.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 java.lang.String getCategory(java.lang.String category,
                                       java.lang.String format)
Utility method to format category.

Parameters:
category - the category string
format - ancilliary format parameter - allowed to be null
Returns:
the formatted string

getPriority

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


getThread

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


getContextMap

protected java.lang.String getContextMap(ContextMap map,
                                         java.lang.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 java.lang.String getMessage(java.lang.String message,
                                      java.lang.String format)
Utility method to format message.

Parameters:
message - the message string
format - ancilliary format parameter - allowed to be null
Returns:
the formatted string

getStackTrace

protected java.lang.String getStackTrace(java.lang.Throwable throwable,
                                         java.lang.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

getRTime

protected java.lang.String getRTime(long time,
                                    java.lang.String format)
Utility method to format relative time.

Parameters:
time - the time
format - ancilliary format parameter - allowed to be null
Returns:
the formatted string

getTime

protected java.lang.String getTime(long time,
                                   java.lang.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(java.lang.String type)
Retrieve the type-id for a particular string.

Parameters:
type - the string
Returns:
the type-id

parse

protected final void parse(java.lang.String patternString)
Parse the input pattern and build internal data structures.

Parameters:
patternString - the pattern