net.wgen.op.logging
Class TraceLogger

java.lang.Object
  extended byorg.apache.log4j.AppenderSkeleton
      extended byorg.apache.log4j.WriterAppender
          extended bynet.wgen.op.logging.TraceLogger
All Implemented Interfaces:
org.apache.log4j.Appender, org.apache.log4j.spi.OptionHandler

public class TraceLogger
extends org.apache.log4j.WriterAppender

Version:
$Id: TraceLogger.html,v 1.2 2007/01/28 04:09:37 paulfeuer Exp $
Author:
Paul Feuer, Wireless Generation, Inc.

Nested Class Summary
private  class TraceLogger.TraceKeyFilter
           
 
Field Summary
private  TraceLogger.TraceKeyFilter _acceptFilter
           
private  java.lang.String _footer
           
private  java.lang.String _header
           
private  java.lang.String _key
           
private  java.lang.String _loggerPath
           
private  java.util.List _loggers
           
private  java.lang.String _previousTrace
           
private  long _startTime
           
private  java.io.StringWriter _traceWriter
           
private static java.lang.String DEFAULT_FOOTER
           
private static java.lang.String DEFAULT_HEADER
           
private  java.text.SimpleDateFormat SDF
           
 
Fields inherited from class org.apache.log4j.WriterAppender
encoding, immediateFlush, qw
 
Fields inherited from class org.apache.log4j.AppenderSkeleton
closed, errorHandler, headFilter, layout, name, tailFilter, threshold
 
Constructor Summary
TraceLogger(java.lang.String key, java.lang.String loggerPath)
           
 
Method Summary
 void addUnformattedMessage(java.lang.String message)
           
 void allowTraceKeyMessages()
           
 java.lang.String getKey()
          The request key on which the logger will filter.
 java.lang.String getTrace()
          The accumulated log statements specific to a request which this logger has caught.
protected  void init()
           
 void setFooter(java.lang.String footer)
           
 void setHeader(java.lang.String header)
           
 void setPreviousTrace(java.lang.String previousTrace)
          Sets a previous story in the case of forwarded requests.
 void supressAllMessages()
           
 void writeFooter()
          Writes a footer to the story.
 void writeHeader()
          Writes a header to the story.
 
Methods inherited from class org.apache.log4j.WriterAppender
activateOptions, append, checkEntryConditions, close, closeWriter, createWriter, getEncoding, getImmediateFlush, requiresLayout, reset, setEncoding, setErrorHandler, setImmediateFlush, setWriter, subAppend
 
Methods inherited from class org.apache.log4j.AppenderSkeleton
addFilter, clearFilters, doAppend, finalize, getErrorHandler, getFilter, getFirstFilter, getLayout, getName, getThreshold, isAsSevereAsThreshold, setLayout, setName, setThreshold
 
Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DEFAULT_HEADER

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

DEFAULT_FOOTER

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

SDF

private final java.text.SimpleDateFormat SDF

_traceWriter

private java.io.StringWriter _traceWriter

_key

private java.lang.String _key

_header

private java.lang.String _header

_footer

private java.lang.String _footer

_loggerPath

private final java.lang.String _loggerPath

_previousTrace

private java.lang.String _previousTrace

_loggers

private java.util.List _loggers

_startTime

private final long _startTime

_acceptFilter

private TraceLogger.TraceKeyFilter _acceptFilter
Constructor Detail

TraceLogger

public TraceLogger(java.lang.String key,
                   java.lang.String loggerPath)
Method Detail

supressAllMessages

public void supressAllMessages()

allowTraceKeyMessages

public void allowTraceKeyMessages()

init

protected void init()

setHeader

public void setHeader(java.lang.String header)

setFooter

public void setFooter(java.lang.String footer)

setPreviousTrace

public void setPreviousTrace(java.lang.String previousTrace)
Sets a previous story in the case of forwarded requests. You should look to see if a story already exists where you expect it to be, and if it is there get the story from it and stuff it in here. In see, I use:
 long stamp = ( _staticStateStamp = ( _staticStateStamp + 1 ) % 10000 );
 String requestKey = getAmpSession().getAmpUserSid() + "-" + stamp;
 RequestStoryLogger requestStoryLogger  = new RequestStoryLogger( requestKey,
                                                                  REQUEST_STORY_LOGGER_PATH );
 LOG.debug( "requestStoryLogger created for key " + requestKey );
 // check for previous story
 RequestStoryLogger previousStoryLogger = (RequestStoryLogger) getValue( "story", null );
 if( previousStoryLogger != null )
 {
      String previousTrace = previousStoryLogger.getStory();
      requestStoryLogger.setPreviousTrace( previousTrace );
 }
 setOutParameter( "story", requestStoryLogger );
 

Parameters:
previousTrace -

addUnformattedMessage

public void addUnformattedMessage(java.lang.String message)
Parameters:
message -

writeHeader

public void writeHeader()
Writes a header to the story.


writeFooter

public void writeFooter()
Writes a footer to the story.


getKey

public java.lang.String getKey()
The request key on which the logger will filter.

Returns:
the request key on which the logger will filter.

getTrace

public java.lang.String getTrace()
The accumulated log statements specific to a request which this logger has caught. Calling this method also closes the Logger, flushes and closes the log writer, and removes it from the LogManager.

Returns:
the story of this request