You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4j-cvs@jakarta.apache.org by ce...@locus.apache.org on 2000/12/26 22:42:48 UTC

cvs commit: jakarta-log4j/org/apache/log4j/spi ErrorCode.java LocationInfo.java Makefile

ceki        00/12/26 13:42:48

  Modified:    org/apache/log4j AppenderSkeleton.java FileAppender.java
                        Hierarchy.java PropertyConfigurator.java
               org/apache/log4j/helpers AppenderAttachableImpl.java
               org/apache/log4j/net JMSAppender.java JMSSink.java
                        SMTPAppender.java
               org/apache/log4j/net/test SMTPMin.java jms.lcf
               org/apache/log4j/spi ErrorCode.java LocationInfo.java
                        Makefile
  Log:
  Small improvements. JMSAppedender now used JNDI.
  
  Revision  Changes    Path
  1.3       +6 -1      jakarta-log4j/org/apache/log4j/AppenderSkeleton.java
  
  Index: AppenderSkeleton.java
  ===================================================================
  RCS file: /home/cvs/jakarta-log4j/org/apache/log4j/AppenderSkeleton.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- AppenderSkeleton.java	2000/12/14 21:07:16	1.2
  +++ AppenderSkeleton.java	2000/12/26 21:42:46	1.3
  @@ -126,7 +126,12 @@
     */
     public
     void finalize() {
  -    LogLog.debug("Closing appender named ["+name+"].");
  +    // An appender might be closed then garbage collected. There is no
  +    // point in closing twice.
  +    if(this.closed) 
  +      return;
  +
  +    LogLog.debug("Finalizing appender named ["+name+"].");
       close();
     }
   
  
  
  
  1.5       +2 -0      jakarta-log4j/org/apache/log4j/FileAppender.java
  
  Index: FileAppender.java
  ===================================================================
  RCS file: /home/cvs/jakarta-log4j/org/apache/log4j/FileAppender.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- FileAppender.java	2000/12/20 17:49:10	1.4
  +++ FileAppender.java	2000/12/26 21:42:46	1.5
  @@ -362,7 +362,9 @@
        @since 0.8.1 */
     public
     void setOption(String key, String value) {
  +    if(value == null) return;
       super.setOption(key, value);
  +    
       if(key.equalsIgnoreCase(FILE_OPTION)) {
         // Trim spaces from both ends. The users probably does not want 
         // trailing spaces in file names.
  
  
  
  1.6       +3 -0      jakarta-log4j/org/apache/log4j/Hierarchy.java
  
  Index: Hierarchy.java
  ===================================================================
  RCS file: /home/cvs/jakarta-log4j/org/apache/log4j/Hierarchy.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- Hierarchy.java	2000/12/22 10:41:29	1.5
  +++ Hierarchy.java	2000/12/26 21:42:46	1.6
  @@ -5,6 +5,9 @@
    * License version 1.1, a copy of which has been included with this
    * distribution in the LICENSE.APL file.  */
   
  +// WARNING This class MUST not have a static initiliazer that
  +// WARNING references the Category or RootCategory classes neither 
  +// WARNING directly nor indirectly.
   
   // Contributors:
   //                Luke Blanshard <lu...@quiq.com>
  
  
  
  1.4       +2 -1      jakarta-log4j/org/apache/log4j/PropertyConfigurator.java
  
  Index: PropertyConfigurator.java
  ===================================================================
  RCS file: /home/cvs/jakarta-log4j/org/apache/log4j/PropertyConfigurator.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- PropertyConfigurator.java	2000/12/21 16:22:02	1.3
  +++ PropertyConfigurator.java	2000/12/26 21:42:46	1.4
  @@ -574,6 +574,8 @@
                 "Could not instantiate appender named \"" + appenderName+"\".");
         return null;
       }
  +    appender.setName(appenderName);
  +
       if(appender instanceof OptionHandler) {
         configureOptionHandler((OptionHandler) appender, prefix + ".", props);
         LogLog.debug("Parsed \"" + appenderName +"\" options.");
  @@ -589,7 +591,6 @@
   	}
         }
       }
  -    appender.setName(appenderName);
       registryPut(appender);
       return appender;
     }
  
  
  
  1.3       +5 -0      jakarta-log4j/org/apache/log4j/helpers/AppenderAttachableImpl.java
  
  Index: AppenderAttachableImpl.java
  ===================================================================
  RCS file: /home/cvs/jakarta-log4j/org/apache/log4j/helpers/AppenderAttachableImpl.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- AppenderAttachableImpl.java	2000/12/14 21:07:43	1.2
  +++ AppenderAttachableImpl.java	2000/12/26 21:42:47	1.3
  @@ -102,6 +102,11 @@
     public
     void removeAllAppenders() {
       if(appenderList != null) {
  +      int len = appenderList.size();      
  +      for(int i = 0; i < len; i++) {
  +	Appender a = (Appender) appenderList.elementAt(i);
  +	a.close();
  +      }
         appenderList.removeAllElements();
         appenderList = null;      
       }
  
  
  
  1.2       +91 -11    jakarta-log4j/org/apache/log4j/net/JMSAppender.java
  
  Index: JMSAppender.java
  ===================================================================
  RCS file: /home/cvs/jakarta-log4j/org/apache/log4j/net/JMSAppender.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- JMSAppender.java	2000/12/20 23:48:05	1.1
  +++ JMSAppender.java	2000/12/26 21:42:47	1.2
  @@ -9,9 +9,17 @@
   
   import org.apache.log4j.AppenderSkeleton;
   import org.apache.log4j.spi.LoggingEvent;
  +import org.apache.log4j.spi.ErrorHandler;
  +import org.apache.log4j.spi.ErrorCode;
   import org.apache.log4j.helpers.LogLog;
  +import org.apache.log4j.helpers.OptionConverter;
   
  +import java.util.Properties;
   import javax.jms.*;
  +import javax.naming.InitialContext;
  +import javax.naming.Context;
  +import javax.naming.NameNotFoundException;
  +import javax.naming.NamingException;
   
   /**
      A simple appender based on JMS.
  @@ -20,50 +28,122 @@
   */
   public class JMSAppender extends AppenderSkeleton {
   
  -  TopicConnectionFactory  topicConnectionFactory;
     TopicConnection  topicConnection;
     TopicSession topicSession;
     TopicPublisher  topicPublisher;
   
  -  int port = 22000;
  -  static String TOPIC = "MyTopic";
   
  +  static String TOPIC_CONNECTION_FACTORY_BINDING_NAME_OPTION 
  +                                                 = "TopicConnectionFactoryBindingName";
  +
  +  static String TOPIC_BINDING_NAME_OPTION = "TopicBindingName";
  +
  +  String topicBindingName;
  +  String tcfBindingName;
  +
     public 
     JMSAppender() {
  +  }
  +
  +  
  +  protected
  +  Object lookup(Context ctx, String name) throws NamingException {
  +    try {
  +      return ctx.lookup(name);
  +    } catch(NameNotFoundException e) {
  +      LogLog.error("Could not find name ["+name+"].");
  +      throw e;
  +    }    
  +  }
  +  
  +  public
  +  void activateOptions() {
  +    TopicConnectionFactory  topicConnectionFactory;
  +
       try {
  -      topicConnectionFactory = new com.sun.messaging.TopicConnectionFactory(port);
  +      Context ctx = new InitialContext();      
  +      topicConnectionFactory = (TopicConnectionFactory) lookup(ctx, tcfBindingName);
         topicConnection = topicConnectionFactory.createTopicConnection();
  -      LogLog.debug("Starting topic connection");
         topicConnection.start();
       
         topicSession = topicConnection.createTopicSession(false,
  -						      Session.AUTO_ACKNOWLEDGE);
  -      Topic topic = topicSession.createTopic(TOPIC);
  +							Session.AUTO_ACKNOWLEDGE);
  +      
  +      Topic topic = (Topic)ctx.lookup(topicBindingName);
         topicPublisher = topicSession.createPublisher(topic);
       } catch(Exception e) {
  -      LogLog.error("-------------", e);
  +      errorHandler.error("Error while activating options for appender named ["+name+
  +			 "].", e, ErrorCode.GENERIC_FAILURE);
       }
  +  }
   
  +  protected
  +  boolean checkEntryConditions() {
  +    if(this.topicSession == null) {
  +      errorHandler.error("No topic session for JMSAppender named ["+ 
  +			name+"].");
  +      return false;
  +    }
  +    
  +    return true;
     }
   
  +
     public 
     void close() {
  +    if(this.closed) 
  +      return;
  +
  +    LogLog.debug("Closing appender ["+name+"].");
  +    this.closed = true;
  +
  +    if(topicConnection != null) {
  +      try {
  +	topicConnection.close();
  +      } catch(JMSException e) {
  +	LogLog.error("Could not close ["+name+"].", e);	
  +      }
  +    }
     }
   
     public
     void append(LoggingEvent event) {
  +    if(!checkEntryConditions()) {
  +      return;
  +    }
  +
       try {
         ObjectMessage msg = topicSession.createObjectMessage();
         msg.setObject(event);
         topicPublisher.publish(msg);
       } catch(Exception e) {
  -      LogLog.error("-------------", e);
  +      errorHandler.error("Could not publish message in JMSAppender ["+name+"].", e, 
  +			 ErrorCode.GENERIC_FAILURE);
       }
     }
   
  +
     public
  -  boolean requiresLayout() {
  -    return false;
  +  String[] getOptionStrings() {
  +    return OptionConverter.concatanateArrays(super.getOptionStrings(),
  +          new String[] {TOPIC_BINDING_NAME_OPTION, 
  +			  TOPIC_CONNECTION_FACTORY_BINDING_NAME_OPTION});
     }
     
  +  public
  +  void setOption(String key, String value) {
  +    if(value == null) return;
  +    super.setOption(key, value);    
  +    
  +    if(key.equals(TOPIC_BINDING_NAME_OPTION)) 
  +      topicBindingName = value;
  +    else if(key.equals(TOPIC_CONNECTION_FACTORY_BINDING_NAME_OPTION)) {
  +      tcfBindingName = value;
  +    }
  +  }
  +
  +  public
  +  boolean requiresLayout() {
  +    return false;
  +  }  
   }
  
  
  
  1.2       +5 -3      jakarta-log4j/org/apache/log4j/net/JMSSink.java
  
  Index: JMSSink.java
  ===================================================================
  RCS file: /home/cvs/jakarta-log4j/org/apache/log4j/net/JMSSink.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- JMSSink.java	2000/12/21 17:59:50	1.1
  +++ JMSSink.java	2000/12/26 21:42:47	1.2
  @@ -26,8 +26,8 @@
     static String TOPIC = "MyTopic";
   
     static public void main(String[] args) {
  -    //PropertyConfigurator.configure(args[0]);
  -    PropertyConfigurator.configure();
  +    PropertyConfigurator.configure(args[0]);
  +    //PropertyConfigurator.configure();
   
       
   
  @@ -41,7 +41,9 @@
         TopicSession topicSession = topicConnection.createTopicSession(false,
   							Session.AUTO_ACKNOWLEDGE);
         Topic topic = topicSession.createTopic(TOPIC);
  -      TopicSubscriber topicSubscriber = topicSession.createSubscriber(topic);
  +      //TopicSubscriber topicSubscriber = topicSession.createSubscriber(topic);
  +      TopicSubscriber topicSubscriber = 
  +           topicSession.createDurableSubscriber(topic, "x");
   
         
         LoggingEvent event;
  
  
  
  1.6       +1 -1      jakarta-log4j/org/apache/log4j/net/SMTPAppender.java
  
  Index: SMTPAppender.java
  ===================================================================
  RCS file: /home/cvs/jakarta-log4j/org/apache/log4j/net/SMTPAppender.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- SMTPAppender.java	2000/12/22 14:12:56	1.5
  +++ SMTPAppender.java	2000/12/26 21:42:47	1.6
  @@ -208,7 +208,7 @@
     protected
     boolean checkEntryConditions() {
       if(this.msg == null) {
  -      errorHandler.error("Message object not configureed.");
  +      errorHandler.error("Message object not configured.");
         return false;
       }
   
  
  
  
  1.3       +3 -1      jakarta-log4j/org/apache/log4j/net/test/SMTPMin.java
  
  Index: SMTPMin.java
  ===================================================================
  RCS file: /home/cvs/jakarta-log4j/org/apache/log4j/net/test/SMTPMin.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- SMTPMin.java	2000/12/14 21:07:58	1.2
  +++ SMTPMin.java	2000/12/26 21:42:47	1.3
  @@ -50,6 +50,8 @@
       cat.warn( "Message " + i++);
       cat.error( "Message " + i++);
       cat.log(Priority.FATAL, "Message " + i++);
  -
  +    Category.shutdown();
  +    Thread.currentThread().getThreadGroup().list();
     }
  +  
   }
  
  
  
  1.2       +2 -2      jakarta-log4j/org/apache/log4j/net/test/jms.lcf
  
  Index: jms.lcf
  ===================================================================
  RCS file: /home/cvs/jakarta-log4j/org/apache/log4j/net/test/jms.lcf,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- jms.lcf	2000/12/22 10:41:30	1.1
  +++ jms.lcf	2000/12/26 21:42:48	1.2
  @@ -2,5 +2,5 @@
   log4j.rootCategory=DEBUG, A1
   log4j.configDebug=true
   log4j.appender.A1=org.apache.log4j.net.JMSAppender
  -
  -
  +log4j.appender.A1.Topic=LOGB
  +log4j.appender.A1.TopicConnectionFactoryBindingName=TCFBN
  
  
  
  1.3       +1 -0      jakarta-log4j/org/apache/log4j/spi/ErrorCode.java
  
  Index: ErrorCode.java
  ===================================================================
  RCS file: /home/cvs/jakarta-log4j/org/apache/log4j/spi/ErrorCode.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- ErrorCode.java	2000/12/14 21:08:10	1.2
  +++ ErrorCode.java	2000/12/26 21:42:48	1.3
  @@ -16,6 +16,7 @@
    */
   public interface ErrorCode {
   
  +  public final int GENERIC_FAILURE = 0;
     public final int WRITE_FAILURE = 1;
     public final int FLUSH_FAILURE = 2;
     public final int CLOSE_FAILURE = 3;
  
  
  
  1.3       +12 -23    jakarta-log4j/org/apache/log4j/spi/LocationInfo.java
  
  Index: LocationInfo.java
  ===================================================================
  RCS file: /home/cvs/jakarta-log4j/org/apache/log4j/spi/LocationInfo.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- LocationInfo.java	2000/12/14 21:08:10	1.2
  +++ LocationInfo.java	2000/12/26 21:42:48	1.3
  @@ -1,26 +1,9 @@
  -/**
  -  Copyright (c) 2000, Ceki Gulcu
  -
  -  Permission is hereby granted, free of charge, to any person
  -  obtaining a copy of this software and associated documentation files
  -  (the "Software"), to deal in the Software without restriction,
  -  including without limitation the rights to use, copy, modify, merge,
  -  publish, distribute, sublicense, and/or sell copies of the Software,
  -  and to permit persons to whom the Software is furnished to do so,
  -  subject to the following conditions:
  -
  -  The above copyright notice and this permission notice shall be
  -  included in all copies or substantial portions of the Software.
  -
  -  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
  -  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  -  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
  -  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
  -  BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
  -  ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
  -  CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
  -  SOFTWARE.
  -*/
  +/*
  + * Copyright (C) The Apache Software Foundation. All rights reserved.
  + *
  + * This software is published under the terms of the Apache Software
  + * License version 1.1, a copy of which has been included with this
  + * distribution in the LICENSE.APL file.  */
   
   
   package org.apache.log4j.spi;
  @@ -104,6 +87,12 @@
       public LocationInfo(Throwable t, String fqnOfCallingClass) {
         if(t == null)
   	return;
  +/*
  + * Copyright (C) The Apache Software Foundation. All rights reserved.
  + *
  + * This software is published under the terms of the Apache Software
  + * License version 1.1, a copy of which has been included with this
  + * distribution in the LICENSE.APL file.  */
   
         String s;
         // Protect against multiple access to sw.
  
  
  
  1.4       +1 -0      jakarta-log4j/org/apache/log4j/spi/Makefile
  
  Index: Makefile
  ===================================================================
  RCS file: /home/cvs/jakarta-log4j/org/apache/log4j/spi/Makefile,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- Makefile	2000/12/19 13:59:20	1.3
  +++ Makefile	2000/12/26 21:42:48	1.4
  @@ -11,6 +11,7 @@
   	ErrorCode.java\
   	CategoryFactory.java\
   	Configurator.java\
  +	TriggeringEventEvaluator.java\
   
   SUBDIRS :=