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]