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 :=