donaldp     2003/06/02 02:52:44

  Modified:    logger/src/java/org/apache/avalon/excalibur/logger
                        SimpleLogKitManager.java
  Log:
  Implement Disposable to close all opened log targets
  
  Submitted By: Mauro Talevi <[EMAIL PROTECTED]>
  
  Revision  Changes    Path
  1.6       +23 -1     
avalon-excalibur/logger/src/java/org/apache/avalon/excalibur/logger/SimpleLogKitManager.java
  
  Index: SimpleLogKitManager.java
  ===================================================================
  RCS file: 
/home/cvs/avalon-excalibur/logger/src/java/org/apache/avalon/excalibur/logger/SimpleLogKitManager.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- SimpleLogKitManager.java  2 Jun 2003 09:49:29 -0000       1.5
  +++ SimpleLogKitManager.java  2 Jun 2003 09:52:44 -0000       1.6
  @@ -52,6 +52,8 @@
   import java.io.File;
   import java.io.IOException;
   import java.util.HashMap;
  +import java.util.Collection;
  +import java.util.Iterator;
   import org.apache.avalon.excalibur.i18n.ResourceManager;
   import org.apache.avalon.excalibur.i18n.Resources;
   import org.apache.avalon.framework.configuration.Configurable;
  @@ -63,10 +65,12 @@
   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.activity.Disposable;
   import org.apache.log.Hierarchy;
   import org.apache.log.LogTarget;
   import org.apache.log.Logger;
   import org.apache.log.Priority;
  +import org.apache.log.util.Closeable;
   import org.apache.log.output.io.FileTarget;
   
   /**
  @@ -79,7 +83,7 @@
    */
   public class SimpleLogKitManager
       extends AbstractLogEnabled
  -    implements LoggerManager, Contextualizable, Configurable
  +    implements LoggerManager, Contextualizable, Configurable, Disposable
   {
       private static final Resources REZ =
           ResourceManager.getPackageResources( SimpleLogKitManager.class );
  @@ -106,6 +110,7 @@
        */
       private org.apache.avalon.framework.logger.Logger m_logger =
           new LogKitLogger( m_logkitLogger );
  +    private Collection m_targets;
   
       /**
        * Contextualize the manager. Requires that the "app.home" entry
  @@ -138,8 +143,25 @@
       {
           final Configuration[] targets = configuration.getChildren( "log-target" );
           final HashMap targetSet = configureTargets( targets );
  +        m_targets = targetSet.values();
           final Configuration[] categories = configuration.getChildren( "category" );
           configureCategories( categories, targetSet );
  +    }
  +
  +    /**
  +     * Close any closable log targets opened by LoggerManager.
  +     */
  +    public void dispose()
  +    {
  +        final Iterator iterator = m_targets.iterator();
  +        while( iterator.hasNext() )
  +        {
  +            final LogTarget logTarget = (LogTarget)iterator.next();
  +            if( logTarget instanceof Closeable )
  +            {
  +                ( (Closeable)logTarget ).close();
  +            }
  +        }
       }
   
       /**
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to