You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4j-dev@logging.apache.org by sd...@apache.org on 2003/05/05 17:15:59 UTC
cvs commit: jakarta-log4j-sandbox/src/java/org/apache/log4j/net XMLSocketNode.java MulticastReceiver.java UDPReceiver.java
sdeboy 2003/05/05 08:15:59
Modified: src/java/org/apache/log4j/net XMLSocketNode.java
MulticastReceiver.java UDPReceiver.java
Log:
Corrected missing decoder implementation code in a receiver.
Revision Changes Path
1.2 +159 -145 jakarta-log4j-sandbox/src/java/org/apache/log4j/net/XMLSocketNode.java
Index: XMLSocketNode.java
===================================================================
RCS file: /home/cvs/jakarta-log4j-sandbox/src/java/org/apache/log4j/net/XMLSocketNode.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- XMLSocketNode.java 5 May 2003 00:41:17 -0000 1.1
+++ XMLSocketNode.java 5 May 2003 15:15:59 -0000 1.2
@@ -49,21 +49,24 @@
package org.apache.log4j.net;
+import org.apache.log4j.*;
+import org.apache.log4j.plugins.Receiver;
+import org.apache.log4j.spi.*;
+
+import java.io.BufferedInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.ObjectInputStream;
+
import java.net.InetAddress;
import java.net.Socket;
+
import java.util.Iterator;
import java.util.Vector;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.ObjectInputStream;
-import java.io.BufferedInputStream;
-import org.apache.log4j.*;
-import org.apache.log4j.spi.*;
-import org.apache.log4j.plugins.Receiver;
/**
- Read {@link LoggingEvent} objects sent from a remote client using XML over
+ Read {@link LoggingEvent} objects sent from a remote client using XML over
Sockets (TCP). These logging events are logged according to local
policy, as if they were generated locally.
@@ -75,149 +78,160 @@
@since 0.8.4
*/
public class XMLSocketNode implements Runnable {
-
- Socket socket;
- LoggerRepository hierarchy;
- Receiver receiver;
- Decoder decoder;
- SocketNodeEventListener listener;
-
- static Logger logger = Logger.getLogger(SocketNode.class);
+ static Logger logger = Logger.getLogger(SocketNode.class);
+ Socket socket;
+ LoggerRepository hierarchy;
+ Receiver receiver;
+ Decoder decoder;
+ SocketNodeEventListener listener;
/**
Constructor for socket and logger repository. */
- public XMLSocketNode(String decoder, Socket socket, LoggerRepository hierarchy) {
- try {
- Class c = Class.forName(decoder);
- Object o = c.newInstance();
- if (o instanceof Decoder) {
- this.decoder = (Decoder) o;
- }
- } catch (ClassNotFoundException cnfe) {
- } catch (IllegalAccessException iae) {
- } catch (InstantiationException ie) {
- }
+ public XMLSocketNode(
+ String decoder, Socket socket, LoggerRepository hierarchy) {
+ try {
+ Class c = Class.forName(decoder);
+ Object o = c.newInstance();
+
+ if (o instanceof Decoder) {
+ this.decoder = (Decoder) o;
+ }
+ } catch (ClassNotFoundException cnfe) {
+ } catch (IllegalAccessException iae) {
+ } catch (InstantiationException ie) {
+ }
this.socket = socket;
this.hierarchy = hierarchy;
}
-
- /**
- Constructor for socket and reciever. */
- public XMLSocketNode(String decoder, Socket socket, Receiver receiver) {
- try {
- Class c = Class.forName(decoder);
- Object o = c.newInstance();
- if (o instanceof Decoder) {
- this.decoder = (Decoder) o;
- }
- } catch (ClassNotFoundException cnfe) {
- } catch (IllegalAccessException iae) {
- } catch (InstantiationException ie) {
- }
-
- this.socket = socket;
- this.receiver = receiver;
- }
-
- /**
- Set the event listener on this node. */
- public void setListener(SocketNodeEventListener _listener) {
- listener = _listener;
- }
-
- public void run() {
- LoggingEvent event;
- Logger remoteLogger;
- Exception listenerException = null;
- InputStream bis = null;
-
- if (this.receiver == null || this.decoder == null) {
- bis = null;
- listenerException =
- new Exception("No receiver or decoder provided. Cannot process xml socket events");
- logger.error(
- "Exception constructing XML Socket Receiver",
- listenerException);
- }
-
- try {
- bis = new BufferedInputStream(socket.getInputStream());
- } catch (Exception e) {
- bis = null;
- listenerException = e;
- logger.error("Exception opening ObjectInputStream to " + socket, e);
- }
-
- if (bis != null) {
- String remoteInfo =
- socket.getInetAddress().getHostName() + ":" + socket.getPort();
- try {
- StringBuffer buf = new StringBuffer();
- while (true) {
- while (bis.available()>0) {
- byte[] b = new byte[1024];
- int readCount = bis.read(b);
- buf.append(new String(b));
- }
- if (buf.length()>0) {
- Vector v = decoder.decodeEvents(buf.toString());
- if (v != null) {
- Iterator iter = v.iterator();
- while (iter.hasNext()) {
- LoggingEvent e = (LoggingEvent) iter.next();
- // store the known remote info in an event property
- e.setProperty("log4j.remoteSourceInfo", remoteInfo);
- // if configured with a receiver, tell it to post the event
- if (receiver != null) {
- receiver.doPost(e);
- // else post it via the hierarchy
- } else {
- // get a logger from the hierarchy. The name of the logger
- // is taken to be the name contained in the event.
- remoteLogger = hierarchy.getLogger(e.getLoggerName());
- //event.logger = remoteLogger;
- // apply the logger-level filter
- if(e.getLevel().isGreaterOrEqual(remoteLogger.getEffectiveLevel())) {
- // finally log the event as if was generated locally
- remoteLogger.callAppenders(e);
- }
- }
- }
- }
-
- buf.setLength(0);
- }
- }
- } catch (java.io.EOFException e) {
- logger.info("Caught java.io.EOFException closing conneciton.");
- listenerException = e;
-} catch (java.net.SocketException e) {
- logger.info("Caught java.net.SocketException closing conneciton.");
- listenerException = e;
-} catch (IOException e) {
- logger.info("Caught java.io.IOException: " + e);
- logger.info("Closing connection.");
- listenerException = e;
-} catch (Exception e) {
- logger.error("Unexpected exception. Closing connecition.", e);
- listenerException = e;
-}
-}
-
-// close the socket
-try {
- if (bis != null) {
- bis.close();
- }
-} catch (Exception e) {
- //logger.info("Could not close connection.", e);
-}
-
-// send event to listener, if configured
-if (listener != null) {
- listener.socketClosedEvent(listenerException);
-}
-}
+ /**
+ Constructor for socket and reciever. */
+ public XMLSocketNode(String decoder, Socket socket, Receiver receiver) {
+ try {
+ Class c = Class.forName(decoder);
+ Object o = c.newInstance();
+
+ if (o instanceof Decoder) {
+ this.decoder = (Decoder) o;
+ }
+ } catch (ClassNotFoundException cnfe) {
+ } catch (IllegalAccessException iae) {
+ } catch (InstantiationException ie) {
+ }
+
+ this.socket = socket;
+ this.receiver = receiver;
+ }
+
+ /**
+ Set the event listener on this node. */
+ public void setListener(SocketNodeEventListener _listener) {
+ listener = _listener;
+ }
+
+ public void run() {
+ LoggingEvent event;
+ Logger remoteLogger;
+ Exception listenerException = null;
+ InputStream bis = null;
+
+ if ((this.receiver == null) || (this.decoder == null)) {
+ bis = null;
+ listenerException =
+ new Exception(
+ "No receiver or decoder provided. Cannot process xml socket events");
+ logger.error(
+ "Exception constructing XML Socket Receiver", listenerException);
+ }
+
+ try {
+ bis = new BufferedInputStream(socket.getInputStream());
+ } catch (Exception e) {
+ bis = null;
+ listenerException = e;
+ logger.error("Exception opening ObjectInputStream to " + socket, e);
+ }
+
+ if (bis != null) {
+ String remoteInfo =
+ socket.getInetAddress().getHostName() + ":" + socket.getPort();
+
+ try {
+ StringBuffer buf = new StringBuffer();
+
+ while (true) {
+ while (bis.available() > 0) {
+ byte[] b = new byte[1024];
+ int readCount = bis.read(b);
+ buf.append(new String(b));
+ }
+
+ if (buf.length() > 0) {
+ Vector v = decoder.decodeEvents(buf.toString());
+
+ if (v != null) {
+ Iterator iter = v.iterator();
+
+ while (iter.hasNext()) {
+ LoggingEvent e = (LoggingEvent) iter.next();
+
+ // store the known remote info in an event property
+ e.setProperty("log4j.remoteSourceInfo", remoteInfo);
+
+ // if configured with a receiver, tell it to post the event
+ if (receiver != null) {
+ receiver.doPost(e);
+
+ // else post it via the hierarchy
+ } else {
+ // get a logger from the hierarchy. The name of the logger
+ // is taken to be the name contained in the event.
+ remoteLogger = hierarchy.getLogger(e.getLoggerName());
+
+ //event.logger = remoteLogger;
+ // apply the logger-level filter
+ if (
+ e.getLevel().isGreaterOrEqual(
+ remoteLogger.getEffectiveLevel())) {
+ // finally log the event as if was generated locally
+ remoteLogger.callAppenders(e);
+ }
+ }
+ }
+ }
+
+ buf.setLength(0);
+ }
+ }
+ } catch (java.io.EOFException e) {
+ logger.info("Caught java.io.EOFException closing conneciton.");
+ listenerException = e;
+ } catch (java.net.SocketException e) {
+ logger.info("Caught java.net.SocketException closing conneciton.");
+ listenerException = e;
+ } catch (IOException e) {
+ logger.info("Caught java.io.IOException: " + e);
+ logger.info("Closing connection.");
+ listenerException = e;
+ } catch (Exception e) {
+ logger.error("Unexpected exception. Closing connecition.", e);
+ listenerException = e;
+ }
+ }
+
+ // close the socket
+ try {
+ if (bis != null) {
+ bis.close();
+ }
+ } catch (Exception e) {
+ //logger.info("Could not close connection.", e);
+ }
+
+ // send event to listener, if configured
+ if (listener != null) {
+ listener.socketClosedEvent(listenerException);
+ }
+ }
}
1.3 +16 -3 jakarta-log4j-sandbox/src/java/org/apache/log4j/net/MulticastReceiver.java
Index: MulticastReceiver.java
===================================================================
RCS file: /home/cvs/jakarta-log4j-sandbox/src/java/org/apache/log4j/net/MulticastReceiver.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- MulticastReceiver.java 5 May 2003 00:41:17 -0000 1.2
+++ MulticastReceiver.java 5 May 2003 15:15:59 -0000 1.3
@@ -67,8 +67,8 @@
/**
- * Multicast-based receiver. Accepts LoggingEvents encoded using
- * MulticastAppender and XMLLayout. The the XML data is converted
+ * Multicast-based receiver. Accepts LoggingEvents encoded using
+ * MulticastAppender and XMLLayout. The the XML data is converted
* back to a LoggingEvent and is posted.
*
* @author Scott Deboy <sd...@apache.org>
@@ -80,8 +80,9 @@
private int port;
private String address;
private MulticastSocket socket = null;
+
//default to log4j xml decoder
- private String decoder="org.apache.log4j.xml.XMLDecoder";
+ private String decoder = "org.apache.log4j.xml.XMLDecoder";
private Decoder decoderImpl;
private final UDPThread receiverThread = new UDPThread();
private final HandlerThread handlerThread = new HandlerThread();
@@ -128,6 +129,18 @@
public void activateOptions() {
InetAddress addr = null;
+
+ try {
+ Class c = Class.forName(decoder);
+ Object o = c.newInstance();
+
+ if (o instanceof Decoder) {
+ this.decoderImpl = (Decoder) o;
+ }
+ } catch (ClassNotFoundException cnfe) {
+ } catch (IllegalAccessException iae) {
+ } catch (InstantiationException ie) {
+ }
try {
addr = InetAddress.getByName(address);
1.4 +13 -11 jakarta-log4j-sandbox/src/java/org/apache/log4j/net/UDPReceiver.java
Index: UDPReceiver.java
===================================================================
RCS file: /home/cvs/jakarta-log4j-sandbox/src/java/org/apache/log4j/net/UDPReceiver.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- UDPReceiver.java 5 May 2003 00:41:17 -0000 1.3
+++ UDPReceiver.java 5 May 2003 15:15:59 -0000 1.4
@@ -73,8 +73,9 @@
*/
public class UDPReceiver extends Receiver {
private static final int PACKET_LENGTH = 8192;
+
//default to log4j xml decoder
- private String decoder="org.apache.log4j.xml.XMLDecoder";
+ private String decoder = "org.apache.log4j.xml.XMLDecoder";
private Decoder decoderImpl;
private boolean isActive = false;
private int port;
@@ -116,17 +117,18 @@
public void activateOptions() {
try {
- try {
- Class c = Class.forName(decoder);
- Object o = c.newInstance();
- if (o instanceof Decoder) {
- this.decoderImpl = (Decoder) o;
- }
- } catch (ClassNotFoundException cnfe) {
- } catch (IllegalAccessException iae) {
- } catch (InstantiationException ie) {
- }
+ Class c = Class.forName(decoder);
+ Object o = c.newInstance();
+
+ if (o instanceof Decoder) {
+ this.decoderImpl = (Decoder) o;
+ }
+ } catch (ClassNotFoundException cnfe) {
+ } catch (IllegalAccessException iae) {
+ } catch (InstantiationException ie) {
+ }
+ try {
socket = new DatagramSocket(port);
receiverThread.start();
handlerThread.start();
---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: log4j-dev-help@jakarta.apache.org