Author: carnold Date: Thu Apr 12 15:22:34 2007 New Revision: 528259 URL: http://svn.apache.org/viewvc?view=rev&rev=528259 Log: Bug 42102: Should be functional with current SVN log4j 1.2
Added: logging/sandbox/log4j/receivers/src/main/java/org/apache/log4j/net/SocketNode13.java - copied, changed from r528221, logging/log4j/trunk/src/java/org/apache/log4j/net/SocketNode.java Modified: logging/sandbox/log4j/receivers/src/main/java/org/apache/log4j/net/SocketHubReceiver.java logging/sandbox/log4j/receivers/src/main/java/org/apache/log4j/net/SocketReceiver.java logging/sandbox/log4j/receivers/src/main/java/org/apache/log4j/xml/UtilLoggingXMLDecoder.java logging/sandbox/log4j/receivers/src/main/java/org/apache/log4j/xml/XMLDecoder.java Modified: logging/sandbox/log4j/receivers/src/main/java/org/apache/log4j/net/SocketHubReceiver.java URL: http://svn.apache.org/viewvc/logging/sandbox/log4j/receivers/src/main/java/org/apache/log4j/net/SocketHubReceiver.java?view=diff&rev=528259&r1=528258&r2=528259 ============================================================================== --- logging/sandbox/log4j/receivers/src/main/java/org/apache/log4j/net/SocketHubReceiver.java (original) +++ logging/sandbox/log4j/receivers/src/main/java/org/apache/log4j/net/SocketHubReceiver.java Thu Apr 12 15:22:34 2007 @@ -312,7 +312,7 @@ private synchronized void setSocket(final Socket newSocket) { connector = null; socket = newSocket; - SocketNode node = new SocketNode(socket, this); + SocketNode13 node = new SocketNode13(socket, this); node.addSocketNodeEventListener(this); synchronized (listenerList) { @@ -395,293 +395,4 @@ // This method does nothing. } - - /** - Read [EMAIL PROTECTED] org.apache.log4j.spi.LoggingEvent} - objects sent from a remote client using - Sockets (TCP). These logging events are logged according to local - policy, as if they were generated locally. - - <p>For example, the socket node might decide to log events to a - local file and also resent them to a second socket node. - - This class is a replica of org.apache.log4j.net.SocketNode - from log4j 1.3 which is substantially different from - the log4j 1.2 implementation. The class was made a - member of SocketHubReceiver to avoid potential collisions. - - @author Ceki Gülcü - @author Paul Smith ([EMAIL PROTECTED]) - */ - private static final class SocketNode - extends ComponentBase implements Runnable, Pauseable { - - /** - * Paused state. - */ - private boolean paused; - /** - * Socket. - */ - private Socket socket; - /** - * Receiver. - */ - private Receiver receiver; - /** - * List of listeners. - */ - private List listenerList = Collections.synchronizedList(new ArrayList()); - - /** - * Method descriptor for LoggingEvent.setProperty - * which does not exist in log4j 1.2.14. - */ - private static final Method LOGGING_EVENT_SET_PROPERTY = - getLoggingEventSetProperty(); - - /** - * Get method descriptor for LoggingEvent.setProperty - * which does not exist in log4j 1.2.14. - * @return method descriptor or null if not supported. - */ - private static Method getLoggingEventSetProperty() { - Method m = null; - try { - m = LoggingEvent.class.getMethod("setProperty", - new Class[] { - String.class, String.class - }); - } catch (NoSuchMethodException e) { - return null; - } - return m; - } - - /** - Constructor for socket and logger repository. - @param s socket - @param hierarchy logger repository - */ - public SocketNode(final Socket s, - final LoggerRepository hierarchy) { - super(); - this.socket = s; - this.repository = hierarchy; - } - - /** - Constructor for socket and receiver. - @param s socket - @param r receiver - */ - public SocketNode(final Socket s, final Receiver r) { - super(); - this.socket = s; - this.receiver = r; - } - - /** - * Set the event listener on this node. - * - * @deprecated Now supports mutliple listeners, this method - * simply invokes the removeSocketNodeEventListener() to remove - * the listener, and then readds it. - * @param l listener - */ - public void setListener(final SocketNodeEventListener l) { - removeSocketNodeEventListener(l); - addSocketNodeEventListener(l); - } - - /** - * Adds the listener to the list of listeners to be notified of the - * respective event. - * @param listener the listener to add to the list - */ - public void addSocketNodeEventListener( - final SocketNodeEventListener listener) { - listenerList.add(listener); - } - - /** - * Removes the registered Listener from this instances list of - * listeners. If the listener has not been registered, then invoking - * this method has no effect. - * - * @param listener the SocketNodeEventListener to remove - */ - public void removeSocketNodeEventListener( - final SocketNodeEventListener listener) { - listenerList.remove(listener); - } - - /** - * Set property in event. - * @param event event, may not be null. - * @param propName property name - * @param propValue property value - * @return true if property was set - */ - private static boolean setEventProperty( - final LoggingEvent event, - final String propName, - final String propValue) { - if (LOGGING_EVENT_SET_PROPERTY != null) { - try { - LOGGING_EVENT_SET_PROPERTY.invoke(event, - new Object[] { - propName, propValue - }); - return true; - } catch (Exception e) { - return false; - } - } - return false; - } - - /** - * Deserialize events from socket until interrupted. - */ - public void run() { - LoggingEvent event; - Logger remoteLogger; - Exception listenerException = null; - ObjectInputStream ois = null; - - try { - ois = - new ObjectInputStream( - new BufferedInputStream(socket.getInputStream())); - } catch (Exception e) { - ois = null; - listenerException = e; - getLogger().error( - "Exception opening ObjectInputStream to " + socket, e); - } - - if (ois != null) { - String remoteInfo = - socket.getInetAddress().getHostName() + ":" + socket.getPort(); - - /** - * notify the listener that the socket has been - * opened and this SocketNode is ready and waiting - */ - fireSocketOpened(remoteInfo); - - try { - while (true) { - // read an event from the wire - event = (LoggingEvent) ois.readObject(); - - // store the known remote info in an event property - setEventProperty(event, "log4j.remoteSourceInfo", remoteInfo); - - // if configured with a receiver, tell it to post the event - if (!isPaused()) { - if ((receiver != null)) { - receiver.doPost(event); - - // 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 = repository.getLogger(event.getLoggerName()); - - //event.logger = remoteLogger; - // apply the logger-level filter - if (event - .getLevel() - .isGreaterOrEqual(remoteLogger.getEffectiveLevel())) { - // finally log the event as if was generated locally - remoteLogger.callAppenders(event); - } - } - } else { - //we simply discard this event. - } - } - } catch (java.io.EOFException e) { - getLogger().info("Caught java.io.EOFException closing connection."); - listenerException = e; - } catch (java.net.SocketException e) { - getLogger().info( - "Caught java.net.SocketException closing connection."); - listenerException = e; - } catch (IOException e) { - getLogger().info("Caught java.io.IOException: " + e); - getLogger().info("Closing connection."); - listenerException = e; - } catch (Exception e) { - getLogger().error("Unexpected exception. Closing connection.", e); - listenerException = e; - } - } - - // close the socket - try { - if (ois != null) { - ois.close(); - } - } catch (Exception e) { - //getLogger().info("Could not close connection.", e); - } - - // send event to listener, if configured - if (listenerList.size() > 0) { - fireSocketClosedEvent(listenerException); - } - } - - /** - * Notifies all registered listeners regarding the closing of the Socket. - * @param listenerException listener exception - */ - private void fireSocketClosedEvent(final Exception listenerException) { - synchronized (listenerList) { - for (Iterator iter = listenerList.iterator(); iter.hasNext();) { - SocketNodeEventListener snel = - (SocketNodeEventListener) iter.next(); - if (snel != null) { - snel.socketClosedEvent(listenerException); - } - } - } - } - - /** - * Notifies all registered listeners regarding the opening of a Socket. - * @param remoteInfo remote info - */ - private void fireSocketOpened(final String remoteInfo) { - synchronized (listenerList) { - for (Iterator iter = listenerList.iterator(); iter.hasNext();) { - SocketNodeEventListener snel = - (SocketNodeEventListener) iter.next(); - if (snel != null) { - snel.socketOpened(remoteInfo); - } - } - } - } - - /** - * Sets if node is paused. - * @param b new value - */ - public void setPaused(final boolean b) { - this.paused = b; - } - - /** - * Get if node is paused. - * @return true if pause. - */ - public boolean isPaused() { - return this.paused; - } - } - } Copied: logging/sandbox/log4j/receivers/src/main/java/org/apache/log4j/net/SocketNode13.java (from r528221, logging/log4j/trunk/src/java/org/apache/log4j/net/SocketNode.java) URL: http://svn.apache.org/viewvc/logging/sandbox/log4j/receivers/src/main/java/org/apache/log4j/net/SocketNode13.java?view=diff&rev=528259&p1=logging/log4j/trunk/src/java/org/apache/log4j/net/SocketNode.java&r1=528221&p2=logging/sandbox/log4j/receivers/src/main/java/org/apache/log4j/net/SocketNode13.java&r2=528259 ============================================================================== --- logging/log4j/trunk/src/java/org/apache/log4j/net/SocketNode.java (original) +++ logging/sandbox/log4j/receivers/src/main/java/org/apache/log4j/net/SocketNode13.java Thu Apr 12 15:22:34 2007 @@ -44,12 +44,16 @@ <p>For example, the socket node might decide to log events to a local file and also resent them to a second socket node. + Implementation lifted from org.apache.log4j.net.SocketNode + in log4j 1.3 and renamed to prevent collision with + log4j 1.2 implementation. + @author Ceki Gülcü @author Paul Smith ([EMAIL PROTECTED]) - @since 0.8.4 + */ -public class SocketNode extends ComponentBase implements Runnable, Pauseable { +public class SocketNode13 extends ComponentBase implements Runnable, Pauseable { /** * Paused state. @@ -68,12 +72,14 @@ */ private List listenerList = Collections.synchronizedList(new ArrayList()); + + /** Constructor for socket and logger repository. @param s socket @param hierarchy logger repository */ - public SocketNode(final Socket s, + public SocketNode13(final Socket s, final LoggerRepository hierarchy) { super(); this.socket = s; @@ -85,7 +91,7 @@ @param s socket @param r receiver */ - public SocketNode(final Socket s, final Receiver r) { + public SocketNode13(final Socket s, final Receiver r) { super(); this.socket = s; this.receiver = r; @@ -125,6 +131,7 @@ final SocketNodeEventListener listener) { listenerList.remove(listener); } + /** * Deserialize events from socket until interrupted. Modified: logging/sandbox/log4j/receivers/src/main/java/org/apache/log4j/net/SocketReceiver.java URL: http://svn.apache.org/viewvc/logging/sandbox/log4j/receivers/src/main/java/org/apache/log4j/net/SocketReceiver.java?view=diff&rev=528259&r1=528258&r2=528259 ============================================================================== --- logging/sandbox/log4j/receivers/src/main/java/org/apache/log4j/net/SocketReceiver.java (original) +++ logging/sandbox/log4j/receivers/src/main/java/org/apache/log4j/net/SocketReceiver.java Thu Apr 12 15:22:34 2007 @@ -256,7 +256,7 @@ "socket not null - creating and starting socketnode"); socketList.add(socket); - SocketNode node = new SocketNode(socket, this); + SocketNode13 node = new SocketNode13(socket, this); synchronized (listenerList) { for (Iterator iter = listenerList.iterator(); iter.hasNext();) { @@ -311,7 +311,7 @@ ) { Socket socket = (Socket) enumeration.nextElement(); details.add( - new SocketDetail(socket, (SocketNode) socketMap.get(socket))); + new SocketDetail(socket, (SocketNode13) socketMap.get(socket))); } return details; @@ -380,7 +380,7 @@ /** * Socket detail. */ - public static final class SocketDetail implements AddressBased, PortBased, + private static final class SocketDetail implements AddressBased, PortBased, Pauseable { /** * Address. @@ -393,7 +393,7 @@ /** * Socket node. */ - private SocketNode socketNode; + private SocketNode13 socketNode; /** * Create new instance. @@ -401,7 +401,7 @@ * @param node socket node */ private SocketDetail(final Socket socket, - final SocketNode node) { + final SocketNode13 node) { super(); this.address = socket.getInetAddress().getHostName(); this.port = socket.getPort(); Modified: logging/sandbox/log4j/receivers/src/main/java/org/apache/log4j/xml/UtilLoggingXMLDecoder.java URL: http://svn.apache.org/viewvc/logging/sandbox/log4j/receivers/src/main/java/org/apache/log4j/xml/UtilLoggingXMLDecoder.java?view=diff&rev=528259&r1=528258&r2=528259 ============================================================================== --- logging/sandbox/log4j/receivers/src/main/java/org/apache/log4j/xml/UtilLoggingXMLDecoder.java (original) +++ logging/sandbox/log4j/receivers/src/main/java/org/apache/log4j/xml/UtilLoggingXMLDecoder.java Thu Apr 12 15:22:34 2007 @@ -417,16 +417,13 @@ exception = new String[]{""}; } - LoggingEvent loggingEvent = new LoggingEvent(); - loggingEvent.setLogger(logger); - loggingEvent.setTimeStamp(timeStamp); - loggingEvent.setLevel(level); - loggingEvent.setThreadName(threadName); - loggingEvent.setMessage(message); - loggingEvent.setNDC(ndc); - loggingEvent.setThrowableInformation(new ThrowableInformation(exception)); - loggingEvent.setLocationInformation(info); - loggingEvent.setProperties(properties); + LoggingEvent loggingEvent = new LoggingEvent(null, + logger, timeStamp, level, message, + threadName, + new ThrowableInformation(exception), + ndc, + info, + properties); events.add(loggingEvent); Modified: logging/sandbox/log4j/receivers/src/main/java/org/apache/log4j/xml/XMLDecoder.java URL: http://svn.apache.org/viewvc/logging/sandbox/log4j/receivers/src/main/java/org/apache/log4j/xml/XMLDecoder.java?view=diff&rev=528259&r1=528258&r2=528259 ============================================================================== --- logging/sandbox/log4j/receivers/src/main/java/org/apache/log4j/xml/XMLDecoder.java (original) +++ logging/sandbox/log4j/receivers/src/main/java/org/apache/log4j/xml/XMLDecoder.java Thu Apr 12 15:22:34 2007 @@ -435,16 +435,14 @@ exception = new String[]{""}; } - LoggingEvent loggingEvent = new LoggingEvent(); - loggingEvent.setLogger(logger); - loggingEvent.setTimeStamp(timeStamp); - loggingEvent.setLevel(levelImpl); - loggingEvent.setThreadName(threadName); - loggingEvent.setMessage(message); - loggingEvent.setNDC(ndc); - loggingEvent.setThrowableInformation(new ThrowableInformation(exception)); - loggingEvent.setLocationInformation(info); - loggingEvent.setProperties(properties); + LoggingEvent loggingEvent = new LoggingEvent(null, + logger, timeStamp, levelImpl, message, + threadName, + new ThrowableInformation(exception), + ndc, + info, + properties); + events.add(loggingEvent); --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]