Package org.apache.log4j.examples.appserver

Source Code of org.apache.log4j.examples.appserver.AppServerPatternParser$ComponentPatternConverter

package org.apache.log4j.examples.appserver;

import org.apache.log4j.*;
import org.apache.log4j.helpers.FormattingInfo;
import org.apache.log4j.helpers.PatternConverter;
import org.apache.log4j.helpers.PatternParser;
import org.apache.log4j.spi.LoggingEvent;

/**
*  Extend PatternParser to recognize additional conversion characters 
*  suitable for use by application servers. 
<p>
<ul>
<li>s - server name
<li>h - hostname
<li>b - component name (c and C already in use)
<li>v - version name
</ul>
<p>
@see org.apache.log4j.examples.MyPatternLayout
@see org.apache.log4j.helpers.PatternParser
@see org.apache.log4j.PatternLayout
*
@author Paul Glezen
*/
public class AppServerPatternParser extends PatternParser
{
  /** Set to 'h'.*/
  protected static final char HOSTNAME_CHAR  = 'h';
  /** Set to 's'.*/
  protected static final char SERVER_CHAR    = 's';
  /** Set to 'b'.*/
  protected static final char COMPONENT_CHAR = 'b';
  /** Set to 'v'.*/
  protected static final char VERSION_CHAR   = 'v';

  /**
   *  Create a parser with the provided pattern.
   *
   *  @param pattern a formatting pattern to parse
   */
  public AppServerPatternParser(String pattern)
  {
    super(pattern);
  }
   
  /**
   *  Decide, based on the format character, which subtype of
   *  <code>Converter</code> to instanciate.  The converter is
   *  then added to the converter list using the
   *  <code>addConverter</code> superclass method.
   *  If the format character is not recognized, it is passed
   *  to the superclass for interpretation.
   */
   public void finalizeConverter(char formatChar)
   {
    PatternConverter pc = null;
    switch( formatChar )
    {
      case HOSTNAME_CHAR:
        pc = new HostnamePatternConverter( formattingInfo );
        currentLiteral.setLength(0);
        addConverter( pc );
         break;
      case SERVER_CHAR:
        pc = new ServerPatternConverter( formattingInfo );
        currentLiteral.setLength(0);
        addConverter( pc );
         break;
      case COMPONENT_CHAR:
        pc = new ComponentPatternConverter( formattingInfo );
        currentLiteral.setLength(0);
        addConverter( pc );
         break;
      case VERSION_CHAR:
        pc = new VersionPatternConverter( formattingInfo );
        currentLiteral.setLength(0);
        addConverter( pc );
         break;
      default:
        super.finalizeConverter( formatChar );
      }
   }
 
   /**
   *  The <code>AppServerPatternConverter</code> inner class factors
   *  out all the duties of a converter except
   */
  private static abstract class AppServerPatternConverter extends PatternConverter
  {
    AppServerPatternConverter(FormattingInfo formattingInfo)
    {
      super(formattingInfo);    
    }

    public String convert(LoggingEvent event)
    {
      String result = null;
      AppServerLoggingEvent appEvent = null;

      if ( event instanceof AppServerLoggingEvent )
      {
        appEvent = (AppServerLoggingEvent) event;
        result = convert( appEvent );
      }
      return result;
    }

    public abstract String convert( AppServerLoggingEvent event );
  }

  private static class HostnamePatternConverter extends AppServerPatternConverter
  {
    HostnamePatternConverter( FormattingInfo formatInfo )
    {  super( formatInfo )}

    public String convert( AppServerLoggingEvent event )
    {  return event.hostname;  }
  }

  private static class ServerPatternConverter extends AppServerPatternConverter
  {
    ServerPatternConverter( FormattingInfo formatInfo )
    {  super( formatInfo )}

    public String convert( AppServerLoggingEvent event )
    {  return event.server;  }
  }

  private static class ComponentPatternConverter extends AppServerPatternConverter
  {
    ComponentPatternConverter( FormattingInfo formatInfo )
    {  super( formatInfo )}

    public String convert( AppServerLoggingEvent event )
    {  return event.component;  }
  }

  private static class VersionPatternConverter extends AppServerPatternConverter
  {
    VersionPatternConverter( FormattingInfo formatInfo )
    {  super( formatInfo )}

    public String convert( AppServerLoggingEvent event )
    {  return event.version;  }
  }
}
TOP

Related Classes of org.apache.log4j.examples.appserver.AppServerPatternParser$ComponentPatternConverter

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.