Index: DefaultApplicationFrame.java
===================================================================
RCS file: /home/cvspublic/jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/components/frame/DefaultApplicationFrame.java,v
retrieving revision 1.7
diff -u -r1.7 DefaultApplicationFrame.java
--- DefaultApplicationFrame.java	2001/08/16 07:19:00	1.7
+++ DefaultApplicationFrame.java	2001/09/07 04:40:42
@@ -27,15 +27,14 @@
 import org.apache.avalon.framework.context.Contextualizable;
 import org.apache.avalon.framework.logger.AbstractLoggable;
 import org.apache.avalon.framework.logger.AvalonFormatter;
-import org.apache.avalon.phoenix.BlockContext;
-import org.apache.log.Hierarchy;
-import org.apache.log.LogTarget;
 import org.apache.log.Logger;
-import org.apache.log.Priority;
-import org.apache.log.output.io.FileTarget;
+import org.apache.avalon.phoenix.BlockContext;
 import org.apache.avalon.excalibur.i18n.ResourceManager;
 import org.apache.avalon.excalibur.i18n.Resources;
+import org.apache.avalon.excalibur.logger.LogKitManager;
+import org.apache.avalon.excalibur.logger.DefaultLogKitManager;
 
+
 /**
  * Manage the "frame" in which Applications operate.
  *
@@ -48,18 +47,15 @@
     private static final Resources REZ =
         ResourceManager.getPackageResources( DefaultPolicy.class );
 
-    private final static String  DEFAULT_FORMAT =
-        "%{time} [%7.7{priority}] <<%{category}>> (%{context}): %{message}\\n%{throwable}";
-
     ///Name of application
     private String       m_name;
 
     ///Base directory of applications working directory
     private File         m_baseDirectory;
+    
+    //LogKit manager for application
+    private LogKitManager m_logKitManager;
 
-    ///Hierarchy of Application logging
-    private Hierarchy    m_logHierarchy    = new Hierarchy();
-
     ///Map of thread pools for application
     private HashMap      m_threadPools     = new HashMap();
 
@@ -92,20 +88,17 @@
     public void configure( final Configuration configuration )
         throws ConfigurationException
     {
+        //Configure Logging
+        final Configuration logs = configuration.getChild( "logs" );
+        configureLogKitManager( logs );
+
         //Configure policy
         final Configuration policy = configuration.getChild( "policy" );
         configurePolicy( policy );
 
         //Configure thread pools
         final Configuration threads = configuration.getChild( "threads" );
-        configureThreadPools( threads );
-
-        //Configure Logging
-        final Configuration logs = configuration.getChild( "logs" );
-        final Configuration[] targets = logs.getChildren( "log-target" );
-        final HashMap targetSet = configureTargets( targets );
-        final Configuration[] categories = logs.getChildren( "category" );
-        configureCategories( categories, targetSet );
+        configureThreadPools( threads );        
     }
 
     /**
@@ -146,7 +139,7 @@
      */
     public Logger getLogger( final String category )
     {
-        return m_logHierarchy.getLoggerFor( category );
+        return m_logKitManager.getLogger( category );
     }
 
     /**
@@ -256,100 +249,21 @@
                 final String message = REZ.getString( "frame.error.thread.create", name );
                 throw new ConfigurationException( message, e );
             }
-        }
-    }
-
-    /**
-     * Configure a set of logtargets based on config data.
-     *
-     * @param targets the target configuration data
-     * @return a Map of target-name to target
-     * @exception ConfigurationException if an error occurs
-     */
-    private HashMap configureTargets( final Configuration[] targets )
-        throws ConfigurationException
-    {
-        final HashMap targetSet = new HashMap();
-
-        for( int i = 0; i < targets.length; i++ )
-        {
-            final Configuration target = targets[ i ];
-            final String name = target.getAttribute( "name" );
-            String location = target.getAttribute( "location" ).trim();
-            final String format = target.getAttribute( "format", DEFAULT_FORMAT );
-
-            if( '/' == location.charAt( 0 ) )
-            {
-                location = location.substring( 1 );
-            }
-
-            final AvalonFormatter formatter = new AvalonFormatter( format );
-
-            //Specify output location for logging
-            final File file = new File( m_baseDirectory, location );
-
-            //Setup logtarget
-            FileTarget logTarget = null;
-            
-            try
-            {
-                logTarget = new FileTarget( file.getAbsoluteFile(), false, formatter );
-            }
-            catch( final IOException ioe )
-            {
-                final String message = REZ.getString( "frame.error.log.create", file );
-                throw new ConfigurationException( message, ioe );
-            }
-
-            targetSet.put( name, logTarget );
         }
-
-        return targetSet;
-    }
+    }    
 
     /**
-     * COnfigure Logging categories.
+     * Configure Logging categories.
      *
-     * @param categories configuration data for categories
-     * @param targets a hashmap containing the already existing taregt
+     * @param configuration the configuration data
      * @exception ConfigurationException if an error occurs
      */
-    private void configureCategories( final Configuration[] categories, final HashMap targets )
-        throws ConfigurationException
+    private void configureLogKitManager( final Configuration configuration )
+    throws ConfigurationException
     {
-        for( int i = 0; i < categories.length; i++ )
-        {
-            final Configuration category = categories[ i ];
-            final String name = category.getAttribute( "name", "" );
-            final String target = category.getAttribute( "target" );
-            final String priorityName = category.getAttribute( "priority" );
-
-            final Logger logger = getLogger( name );
-
-            final LogTarget logTarget = (LogTarget)targets.get( target );
-            if( null == target )
-            {
-                final String message = REZ.getString( "frame.error.target.locate", target );
-                throw new ConfigurationException( message );
-            }
-
-            final Priority priority = Priority.getPriorityForName( priorityName );
-            if( !priority.getName().equals( priorityName ) )
-            {
-                final String message = REZ.getString( "frame.error.priority.unknown", priorityName );
-                throw new ConfigurationException( message );
-            }
-
-            if( name.equals( "" ) )
-            {
-                m_logHierarchy.setDefaultPriority( priority );
-                m_logHierarchy.setDefaultLogTarget( logTarget );
-            }
-            else
-            {
-                logger.setPriority( priority );
-                logger.setLogTargets( new LogTarget[] { logTarget } );
-            }
-        }
+        final DefaultLogKitManager logKitManager = new DefaultLogKitManager();        
+        logKitManager.setLogger( getLogger() );
+        logKitManager.configure( configuration );
+        m_logKitManager = logKitManager;
     }
 }

