Index: DefaultApplicationFrame.java
===================================================================
RCS file: /home/cvs/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/06 12:52:43
@@ -28,13 +28,11 @@
 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.excalibur.i18n.ResourceManager;
 import org.apache.avalon.excalibur.i18n.Resources;
+import org.apache.avalon.excalibur.logger.LogKitManager;
+import org.apache.avalon.excalibur.logger.DefaultLogKitManager;
+import org.apache.log.Logger;
 
 /**
  * Manage the "frame" in which Applications operate.
@@ -58,7 +56,7 @@
     private File         m_baseDirectory;
 
     ///Hierarchy of Application logging
-    private Hierarchy    m_logHierarchy    = new Hierarchy();
+    private LogKitManager m_logKitManager;
 
     ///Map of thread pools for application
     private HashMap      m_threadPools     = new HashMap();
@@ -102,10 +100,7 @@
 
         //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 );
+        configureLogKitManager( logs );
     }
 
     /**
@@ -120,7 +115,7 @@
         final ClassLoader parentClassLoader = Thread.currentThread().getContextClassLoader();
         m_classLoader = new PolicyClassLoader( m_classPath, parentClassLoader, m_policy );
 
-        //base contxt that all block contexts inherit from
+        //base context that all block contexts inherit from
         final DefaultContext context = new DefaultContext();
         context.put( BlockContext.APP_NAME, m_name );
         context.put( BlockContext.APP_HOME_DIR, m_baseDirectory );
@@ -146,7 +141,7 @@
      */
     public Logger getLogger( final String category )
     {
-        return m_logHierarchy.getLoggerFor( category );
+        return m_logKitManager.getLogger( category );
     }
 
     /**
@@ -260,96 +255,28 @@
     }
 
     /**
-     * Configure a set of logtargets based on config data.
+     * Configure a set of log-target and category.
      *
-     * @param targets the target configuration data
-     * @return a Map of target-name to target
-     * @exception ConfigurationException if an error occurs
+     * @param logs logkit-manager configuration data
      */
-    private HashMap configureTargets( final Configuration[] targets )
+    private void configureLogKitManager( final Configuration logs )
         throws ConfigurationException
     {
-        final HashMap targetSet = new HashMap();
-
-        for( int i = 0; i < targets.length; i++ )
+        try
         {
-            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 );
+            final DefaultContext context = new DefaultContext();
+            context.put( "app.name", m_name );
+            context.put( "app.home", m_baseDirectory );
+
+            final DefaultLogKitManager logKitManager = new DefaultLogKitManager();
+            logKitManager.setLogger( getLogger() );
+            logKitManager.contextualize( context );
+            logKitManager.configure( logs );
+            m_logKitManager = logKitManager;
         }
-
-        return targetSet;
-    }
-
-    /**
-     * COnfigure Logging categories.
-     *
-     * @param categories configuration data for categories
-     * @param targets a hashmap containing the already existing taregt
-     * @exception ConfigurationException if an error occurs
-     */
-    private void configureCategories( final Configuration[] categories, final HashMap targets )
-        throws ConfigurationException
-    {
-        for( int i = 0; i < categories.length; i++ )
+        catch ( final ContextException ce )
         {
-            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 } );
-            }
+            throw new ConfigurationException( "Error contextualize logkit-manager", ce );
         }
     }
 }

