You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@avalon.apache.org by do...@apache.org on 2002/02/04 10:57:55 UTC

cvs commit: jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/frontends CLIMain.java

donaldp     02/02/04 01:57:55

  Modified:    src/java/org/apache/avalon/phoenix/components/embeddor
                        DefaultEmbeddor.java
               src/java/org/apache/avalon/phoenix/frontends CLIMain.java
  Log:
  Create the Logger in the Frontend rather than in the Embeddor. Creating it in the Embeddor violates IOC.
  
  This also fixes a recently introduced bug ;)
  
  Revision  Changes    Path
  1.44      +0 -43     jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/components/embeddor/DefaultEmbeddor.java
  
  Index: DefaultEmbeddor.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/components/embeddor/DefaultEmbeddor.java,v
  retrieving revision 1.43
  retrieving revision 1.44
  diff -u -r1.43 -r1.44
  --- DefaultEmbeddor.java	2 Feb 2002 11:50:10 -0000	1.43
  +++ DefaultEmbeddor.java	4 Feb 2002 09:57:55 -0000	1.44
  @@ -28,9 +28,6 @@
   import org.apache.avalon.framework.context.ContextException;
   import org.apache.avalon.framework.context.Contextualizable;
   import org.apache.avalon.framework.logger.AbstractLogEnabled;
  -import org.apache.avalon.framework.logger.AvalonFormatter;
  -import org.apache.avalon.framework.logger.LogKitLogger;
  -import org.apache.avalon.framework.logger.Logger;
   import org.apache.avalon.framework.parameters.ParameterException;
   import org.apache.avalon.framework.parameters.Parameterizable;
   import org.apache.avalon.framework.parameters.Parameters;
  @@ -45,10 +42,6 @@
   import org.apache.avalon.phoenix.interfaces.LogManager;
   import org.apache.avalon.phoenix.interfaces.PackageRepository;
   import org.apache.avalon.phoenix.interfaces.SystemManager;
  -import org.apache.log.Hierarchy;
  -import org.apache.log.LogTarget;
  -import org.apache.log.Priority;
  -import org.apache.log.output.io.FileTarget;
   
   /**
    * This is the object that is interacted with to create, manage and
  @@ -64,12 +57,8 @@
       private static final Resources REZ =
           ResourceManager.getPackageResources( DefaultEmbeddor.class );
   
  -    private static final String DEFAULT_LOG_FILE = "/logs/phoenix.log";
       private static final String DEFAULT_APPS_PATH = "/apps";
   
  -    private final static String DEFAULT_FORMAT =
  -        "%{time} [%7.7{priority}] (%{category}): %{message}\\n%{throwable}";
  -
       private EmbeddorObservable m_observable = new EmbeddorObservable();
       private Parameters m_parameters;
       private String m_phoenixHome;
  @@ -377,9 +366,6 @@
       private synchronized void createComponents()
           throws Exception
       {
  -        final Logger logger = createLogger();
  -        enableLogging( logger );
  -
           String component = null;
   
           component = m_parameters.getParameter( PackageRepository.ROLE );
  @@ -405,35 +391,6 @@
   
           component = m_parameters.getParameter( Kernel.ROLE );
           m_kernel = (Kernel)createComponent( component, Kernel.class );
  -    }
  -
  -    /**
  -     * Uses <code>org.apache.log.Hierarchy</code> to create a new
  -     * logger using "Phoenix" as its category, DEBUG as its
  -     * priority and the log-destination from Parameters as its
  -     * destination.
  -     * TODO: allow configurable priorities and multiple
  -     * logtargets.
  -     */
  -    private Logger createLogger()
  -        throws Exception
  -    {
  -        final String logDestination =
  -            m_parameters.getParameter( "log-destination", m_phoenixHome + DEFAULT_LOG_FILE );
  -        final String logPriority =
  -            m_parameters.getParameter( "log-priority", "INFO" );
  -        final AvalonFormatter formatter = new AvalonFormatter( DEFAULT_FORMAT );
  -        final File file = new File( logDestination );
  -        final FileTarget logTarget = new FileTarget( file, false, formatter );
  -
  -        //Create an anonymous hierarchy so no other
  -        //components can get access to logging hierarchy
  -        final Hierarchy hierarchy = new Hierarchy();
  -        final org.apache.log.Logger logger = hierarchy.getLoggerFor( "Phoenix" );
  -        logger.setLogTargets( new LogTarget[]{ logTarget } );
  -        logger.setPriority( Priority.getPriorityForName( logPriority ) );
  -        logger.info( "Logger started" );
  -        return new LogKitLogger( logger );
       }
   
       /**
  
  
  
  1.20      +54 -0     jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/frontends/CLIMain.java
  
  Index: CLIMain.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/frontends/CLIMain.java,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- CLIMain.java	15 Dec 2001 22:51:34 -0000	1.19
  +++ CLIMain.java	4 Feb 2002 09:57:55 -0000	1.20
  @@ -13,10 +13,20 @@
   import org.apache.avalon.framework.context.DefaultContext;
   import org.apache.avalon.framework.parameters.Parameterizable;
   import org.apache.avalon.framework.parameters.Parameters;
  +import org.apache.avalon.framework.logger.AbstractLogEnabled;
  +import org.apache.avalon.framework.logger.AvalonFormatter;
  +import org.apache.avalon.framework.logger.LogKitLogger;
  +import org.apache.avalon.framework.logger.Logger;
  +import org.apache.avalon.framework.logger.LogEnabled;
   import org.apache.avalon.phoenix.Constants;
   import org.apache.avalon.phoenix.components.embeddor.DefaultEmbeddor;
   import org.apache.avalon.phoenix.interfaces.Embeddor;
   import java.util.Hashtable;
  +import java.io.File;
  +import org.apache.log.Hierarchy;
  +import org.apache.log.LogTarget;
  +import org.apache.log.Priority;
  +import org.apache.log.output.io.FileTarget;
   
   /**
    * The class to load the kernel and start it running.
  @@ -30,6 +40,13 @@
       private static final Resources REZ =
           ResourceManager.getPackageResources( CLIMain.class );
   
  +    private static final String DEFAULT_LOG_FILE = "/logs/phoenix.log";
  +
  +    private final static String DEFAULT_FORMAT =
  +        "%{time} [%7.7{priority}] (%{category}): %{message}\\n%{throwable}";
  +
  +
  +
       ///The embeddor attached to frontend
       private Embeddor m_embeddor;
   
  @@ -137,6 +154,12 @@
           {
               m_embeddor = new DefaultEmbeddor();
   
  +            if( m_embeddor instanceof LogEnabled )
  +            {
  +                final Logger logger = createLogger( parameters );
  +                ( (LogEnabled)m_embeddor ).enableLogging( logger );
  +            }
  +
               if( m_embeddor instanceof Contextualizable )
               {
                   final DefaultContext context = new DefaultContext( data );
  @@ -157,6 +180,37 @@
           }
   
           return true;
  +    }
  +
  +
  +    /**
  +     * Uses <code>org.apache.log.Hierarchy</code> to create a new
  +     * logger using "Phoenix" as its category, DEBUG as its
  +     * priority and the log-destination from Parameters as its
  +     * destination.
  +     * TODO: allow configurable priorities and multiple
  +     * logtargets.
  +     */
  +    private Logger createLogger( final Parameters parameters )
  +        throws Exception
  +    {
  +        final String phoenixHome = parameters.getParameter( "phoenix.home" );
  +        final String logDestination =
  +            parameters.getParameter( "log-destination", phoenixHome + DEFAULT_LOG_FILE );
  +        final String logPriority =
  +            parameters.getParameter( "log-priority", "INFO" );
  +        final AvalonFormatter formatter = new AvalonFormatter( DEFAULT_FORMAT );
  +        final File file = new File( logDestination );
  +        final FileTarget logTarget = new FileTarget( file, false, formatter );
  +
  +        //Create an anonymous hierarchy so no other
  +        //components can get access to logging hierarchy
  +        final Hierarchy hierarchy = new Hierarchy();
  +        final org.apache.log.Logger logger = hierarchy.getLoggerFor( "Phoenix" );
  +        logger.setLogTargets( new LogTarget[]{ logTarget } );
  +        logger.setPriority( Priority.getPriorityForName( logPriority ) );
  +        logger.info( "Logger started" );
  +        return new LogKitLogger( logger );
       }
   
       /**
  
  
  

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>