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 ca...@apache.org on 2007/06/06 00:07:59 UTC
svn commit: r544657 - in /logging/log4j/companions/receivers/trunk: ./
src/main/java/org/apache/log4j/db/ src/main/java/org/apache/log4j/net/
src/main/java/org/apache/log4j/xml/ src/test/java/org/apache/log4j/
src/test/java/org/apache/log4j/db/ src/tes...
Author: carnold
Date: Tue Jun 5 15:07:58 2007
New Revision: 544657
URL: http://svn.apache.org/viewvc?view=rev&rev=544657
Log:
Bug 42102: Added missing parseUnrecElement's for DBAppender, UDP and MulticastAppender ports
Added:
logging/log4j/companions/receivers/trunk/src/main/java/org/apache/log4j/net/MulticastAppender.java
- copied, changed from r544496, logging/log4j/trunk/src/java/org/apache/log4j/net/MulticastAppender.java
logging/log4j/companions/receivers/trunk/src/main/java/org/apache/log4j/net/UDPAppender.java
- copied, changed from r544496, logging/log4j/trunk/src/java/org/apache/log4j/net/UDPAppender.java
logging/log4j/companions/receivers/trunk/src/main/java/org/apache/log4j/xml/LogFileXMLReceiver.java
- copied unchanged from r544496, logging/log4j/trunk/src/java/org/apache/log4j/xml/LogFileXMLReceiver.java
logging/log4j/companions/receivers/trunk/src/test/java/org/apache/log4j/VectorAppender.java
- copied unchanged from r544602, logging/log4j/trunk/tests/src/java/org/apache/log4j/VectorAppender.java
logging/log4j/companions/receivers/trunk/src/test/java/org/apache/log4j/db/
logging/log4j/companions/receivers/trunk/src/test/java/org/apache/log4j/db/FullCycleDBTest.java
- copied, changed from r544601, logging/log4j/trunk/tests/src/java/org/apache/log4j/db/FullCycleDBTest.java
logging/log4j/companions/receivers/trunk/src/test/resources/org/
logging/log4j/companions/receivers/trunk/src/test/resources/org/apache/
logging/log4j/companions/receivers/trunk/src/test/resources/org/apache/log4j/
logging/log4j/companions/receivers/trunk/src/test/resources/org/apache/log4j/db/
logging/log4j/companions/receivers/trunk/src/test/resources/org/apache/log4j/db/append-with-drivermanager1.xml
- copied, changed from r544602, logging/log4j/trunk/tests/input/db/append-with-drivermanager1.xml
logging/log4j/companions/receivers/trunk/src/test/resources/org/apache/log4j/db/read-with-drivermanager1.xml
- copied, changed from r544602, logging/log4j/trunk/tests/input/db/read-with-drivermanager1.xml
Modified:
logging/log4j/companions/receivers/trunk/pom.xml
logging/log4j/companions/receivers/trunk/src/main/java/org/apache/log4j/db/CustomSQLDBReceiver.java
logging/log4j/companions/receivers/trunk/src/main/java/org/apache/log4j/db/DBAppender.java
logging/log4j/companions/receivers/trunk/src/main/java/org/apache/log4j/db/DBReceiver.java
logging/log4j/companions/receivers/trunk/src/main/java/org/apache/log4j/db/DBReceiverJob.java
logging/log4j/companions/receivers/trunk/src/main/java/org/apache/log4j/db/DataSourceConnectionSource.java
logging/log4j/companions/receivers/trunk/src/main/java/org/apache/log4j/net/SocketHubReceiver.java
Modified: logging/log4j/companions/receivers/trunk/pom.xml
URL: http://svn.apache.org/viewvc/logging/log4j/companions/receivers/trunk/pom.xml?view=diff&rev=544657&r1=544656&r2=544657
==============================================================================
--- logging/log4j/companions/receivers/trunk/pom.xml (original)
+++ logging/log4j/companions/receivers/trunk/pom.xml Tue Jun 5 15:07:58 2007
@@ -176,9 +176,15 @@
<scope>test</scope>
</dependency>
<dependency>
+ <groupId>hsqldb</groupId>
+ <artifactId>hsqldb</artifactId>
+ <version>1.8.0.7</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
- <version>1.2.15</version>
+ <version>1.2.15-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
Modified: logging/log4j/companions/receivers/trunk/src/main/java/org/apache/log4j/db/CustomSQLDBReceiver.java
URL: http://svn.apache.org/viewvc/logging/log4j/companions/receivers/trunk/src/main/java/org/apache/log4j/db/CustomSQLDBReceiver.java?view=diff&rev=544657&r1=544656&r2=544657
==============================================================================
--- logging/log4j/companions/receivers/trunk/src/main/java/org/apache/log4j/db/CustomSQLDBReceiver.java (original)
+++ logging/log4j/companions/receivers/trunk/src/main/java/org/apache/log4j/db/CustomSQLDBReceiver.java Tue Jun 5 15:07:58 2007
@@ -23,9 +23,12 @@
import java.sql.Statement;
import java.util.Hashtable;
import java.util.StringTokenizer;
+import java.util.Properties;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
+import org.apache.log4j.xml.UnrecognizedElementHandler;
+import org.apache.log4j.xml.DOMConfigurator;
import org.apache.log4j.plugins.Pauseable;
import org.apache.log4j.plugins.Receiver;
import org.apache.log4j.scheduler.Job;
@@ -34,6 +37,8 @@
import org.apache.log4j.spi.LoggerRepositoryEx;
import org.apache.log4j.spi.ThrowableInformation;
import org.apache.log4j.spi.LocationInfo;
+import org.apache.log4j.spi.OptionHandler;
+import org.w3c.dom.Element;
/**
* Converts log data stored in a database into LoggingEvents.
@@ -126,7 +131,7 @@
* @author Scott Deboy <sd...@apache.org>
* <p>
*/
-public class CustomSQLDBReceiver extends Receiver implements Pauseable {
+public class CustomSQLDBReceiver extends Receiver implements Pauseable, UnrecognizedElementHandler {
protected volatile Connection connection = null;
@@ -444,4 +449,20 @@
}
}
}
+
+ /**
+ * @{inheritDoc}
+ */
+ public boolean parseUnrecognizedElement(Element element, Properties props) throws Exception {
+ if ("connectionSource".equals(element.getNodeName())) {
+ OptionHandler instance =
+ DOMConfigurator.parseElement(element, props, ConnectionSource.class);
+ if (instance instanceof ConnectionSource) {
+ setConnectionSource((ConnectionSource) instance);
+ }
+ return true;
+ }
+ return false;
+ }
+
}
Modified: logging/log4j/companions/receivers/trunk/src/main/java/org/apache/log4j/db/DBAppender.java
URL: http://svn.apache.org/viewvc/logging/log4j/companions/receivers/trunk/src/main/java/org/apache/log4j/db/DBAppender.java?view=diff&rev=544657&r1=544656&r2=544657
==============================================================================
--- logging/log4j/companions/receivers/trunk/src/main/java/org/apache/log4j/db/DBAppender.java (original)
+++ logging/log4j/companions/receivers/trunk/src/main/java/org/apache/log4j/db/DBAppender.java Tue Jun 5 15:07:58 2007
@@ -21,18 +21,22 @@
import org.apache.log4j.db.dialect.SQLDialect;
import org.apache.log4j.db.dialect.Util;
import org.apache.log4j.helpers.LogLog;
-import org.apache.log4j.spi.LoggingEvent;
import org.apache.log4j.spi.LocationInfo;
+import org.apache.log4j.spi.LoggingEvent;
+import org.apache.log4j.xml.DOMConfigurator;
+import org.apache.log4j.xml.UnrecognizedElementHandler;
+import org.w3c.dom.Element;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
-
import java.util.Iterator;
+import java.util.Properties;
import java.util.Set;
-import java.lang.reflect.*;
/**
@@ -106,14 +110,14 @@
*
* <p>
* <b>Configuration </b> DBAppender can be configured programmatically, or using
- * {@link org.apache.log4j.joran.JoranConfigurator JoranConfigurator}. Example
+ * {@link org.apache.log4j.xml.DOMConfigurator JoranConfigurator}. Example
* scripts can be found in the <em>tests/input/db</em> directory.
*
* @author Ceki Gülcü
* @author Ray DeCampo
* @since 1.3
*/
-public class DBAppender extends AppenderSkeleton {
+public class DBAppender extends AppenderSkeleton implements UnrecognizedElementHandler {
static final String insertPropertiesSQL =
"INSERT INTO logging_event_property (event_id, mapped_key, mapped_value) VALUES (?, ?, ?)";
static final String insertExceptionSQL =
@@ -163,7 +167,7 @@
}
public void activateOptions() {
- getLogger().debug("DBAppender.activateOptions called");
+ LogLog.debug("DBAppender.activateOptions called");
if (connectionSource == null) {
throw new IllegalStateException(
@@ -198,7 +202,7 @@
* The connectionSource to set.
*/
public void setConnectionSource(ConnectionSource connectionSource) {
- getLogger().debug("setConnectionSource called for DBAppender");
+ LogLog.debug("setConnectionSource called for DBAppender");
this.connectionSource = connectionSource;
}
@@ -237,7 +241,7 @@
int updateCount = insertStatement.executeUpdate();
if (updateCount != 1) {
- getLogger().warn("Failed to insert loggingEvent");
+ LogLog.warn("Failed to insert loggingEvent");
}
ResultSet rs = null;
@@ -254,7 +258,7 @@
}
throw ex;
} catch(IllegalAccessException ex) {
- getLogger().warn("IllegalAccessException invoking PreparedStatement.getGeneratedKeys", ex);
+ LogLog.warn("IllegalAccessException invoking PreparedStatement.getGeneratedKeys", ex);
}
}
@@ -318,7 +322,7 @@
String[] strRep = event.getThrowableStrRep();
if (strRep != null) {
- getLogger().debug("Logging an exception");
+ LogLog.debug("Logging an exception");
PreparedStatement insertExceptionStatement =
connection.prepareStatement(insertExceptionSQL);
@@ -342,7 +346,7 @@
connection.commit();
} catch (Throwable sqle) {
- getLogger().error("problem appending event", sqle);
+ LogLog.error("problem appending event", sqle);
} finally {
DBHelper.closeConnection(connection);
}
@@ -377,30 +381,20 @@
return false;
}
- /** Here Be Dragons.
- * This code is necessary because this class originally came from the log4j 1.3 area, before being backported to 1.3
- * In 1.3, Appenders had their own logger, but 1.2 does not have this, so instead we embed a 'compatible' mechanism here
- * The goal was to keep the code as similar as possible, to avoid as many conflicts as possble.
- * Code suggested by Curt Arnold (and not Curty Arnold... ;) )
- */
-
- private static final class LogLogger {
- public void debug(final String msg) {
- LogLog.debug(msg);
+ /**
+ * @{inheritDoc}
+ */
+ public boolean parseUnrecognizedElement(Element element, Properties props) throws Exception {
+ if ("connectionSource".equals(element.getNodeName())) {
+ Object instance =
+ DOMConfigurator.parseElement(element, props, ConnectionSource.class);
+ if (instance instanceof ConnectionSource) {
+ ConnectionSource source = (ConnectionSource) instance;
+ source.activateOptions();
+ setConnectionSource(source);
+ }
+ return true;
}
- public void warn(final String msg, final Throwable ex) {
- LogLog.warn(msg, ex);
- }
- public void warn(final String msg) {
- LogLog.warn(msg);
- }
- public void error(final String msg, final Throwable ex) {
- LogLog.error(msg, ex);
- }
- }
-
- private static final LogLogger getLogger() {
- return new LogLogger();
+ return false;
}
-
}
Modified: logging/log4j/companions/receivers/trunk/src/main/java/org/apache/log4j/db/DBReceiver.java
URL: http://svn.apache.org/viewvc/logging/log4j/companions/receivers/trunk/src/main/java/org/apache/log4j/db/DBReceiver.java?view=diff&rev=544657&r1=544656&r2=544657
==============================================================================
--- logging/log4j/companions/receivers/trunk/src/main/java/org/apache/log4j/db/DBReceiver.java (original)
+++ logging/log4j/companions/receivers/trunk/src/main/java/org/apache/log4j/db/DBReceiver.java Tue Jun 5 15:07:58 2007
@@ -20,8 +20,12 @@
import org.apache.log4j.plugins.Pauseable;
import org.apache.log4j.plugins.Receiver;
import org.apache.log4j.scheduler.Scheduler;
-import org.apache.log4j.spi.LoggerRepository;
import org.apache.log4j.spi.LoggerRepositoryEx;
+import org.apache.log4j.xml.DOMConfigurator;
+import org.apache.log4j.xml.UnrecognizedElementHandler;
+import org.w3c.dom.Element;
+
+import java.util.Properties;
/**
*
@@ -29,7 +33,7 @@
* @author Ceki Gülcü
*
*/
-public class DBReceiver extends Receiver implements Pauseable {
+public class DBReceiver extends Receiver implements Pauseable, UnrecognizedElementHandler {
/**
* By default we refresh data every 1000 milliseconds.
* @see #setRefreshMillis
@@ -115,4 +119,22 @@
public boolean isPaused() {
return paused;
}
+
+ /**
+ * @{inheritDoc}
+ */
+ public boolean parseUnrecognizedElement(Element element, Properties props) throws Exception {
+ if ("connectionSource".equals(element.getNodeName())) {
+ Object instance =
+ DOMConfigurator.parseElement(element, props, ConnectionSource.class);
+ if (instance instanceof ConnectionSource) {
+ ConnectionSource source = (ConnectionSource) instance;
+ source.activateOptions();
+ setConnectionSource(source);
+ }
+ return true;
+ }
+ return false;
+ }
+
}
Modified: logging/log4j/companions/receivers/trunk/src/main/java/org/apache/log4j/db/DBReceiverJob.java
URL: http://svn.apache.org/viewvc/logging/log4j/companions/receivers/trunk/src/main/java/org/apache/log4j/db/DBReceiverJob.java?view=diff&rev=544657&r1=544656&r2=544657
==============================================================================
--- logging/log4j/companions/receivers/trunk/src/main/java/org/apache/log4j/db/DBReceiverJob.java (original)
+++ logging/log4j/companions/receivers/trunk/src/main/java/org/apache/log4j/db/DBReceiverJob.java Tue Jun 5 15:07:58 2007
@@ -21,16 +21,14 @@
import org.apache.log4j.Logger;
import org.apache.log4j.scheduler.Job;
import org.apache.log4j.spi.ComponentBase;
-import org.apache.log4j.spi.LoggerRepository;
+import org.apache.log4j.spi.LocationInfo;
import org.apache.log4j.spi.LoggingEvent;
import org.apache.log4j.spi.ThrowableInformation;
-import org.apache.log4j.spi.LocationInfo;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
-import java.sql.Statement;
import java.util.Hashtable;
import java.util.Vector;
@@ -54,7 +52,7 @@
"WHERE event_id > ? ORDER BY event_id ASC";
- long lastId = 0;
+ long lastId = Short.MIN_VALUE;
DBReceiver parentDBReceiver;
@@ -197,7 +195,6 @@
*
* @param connection
* @param id
- * @param event
* @throws SQLException
*/
ThrowableInformation getException(Connection connection, long id)
Modified: logging/log4j/companions/receivers/trunk/src/main/java/org/apache/log4j/db/DataSourceConnectionSource.java
URL: http://svn.apache.org/viewvc/logging/log4j/companions/receivers/trunk/src/main/java/org/apache/log4j/db/DataSourceConnectionSource.java?view=diff&rev=544657&r1=544656&r2=544657
==============================================================================
--- logging/log4j/companions/receivers/trunk/src/main/java/org/apache/log4j/db/DataSourceConnectionSource.java (original)
+++ logging/log4j/companions/receivers/trunk/src/main/java/org/apache/log4j/db/DataSourceConnectionSource.java Tue Jun 5 15:07:58 2007
@@ -18,10 +18,14 @@
package org.apache.log4j.db;
-import java.sql.Connection;
-import java.sql.SQLException;
+import org.apache.log4j.xml.DOMConfigurator;
+import org.apache.log4j.xml.UnrecognizedElementHandler;
+import org.w3c.dom.Element;
import javax.sql.DataSource;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.util.Properties;
/**
@@ -33,7 +37,8 @@
* @author Ray DeCampo
* @author Ceki Gülcü
*/
-public class DataSourceConnectionSource extends ConnectionSourceSkeleton {
+public class DataSourceConnectionSource extends ConnectionSourceSkeleton
+ implements UnrecognizedElementHandler {
private DataSource dataSource;
@@ -82,5 +87,19 @@
this.dataSource = dataSource;
}
+ /**
+ * @{inheritDoc}
+ */
+ public boolean parseUnrecognizedElement(Element element, Properties props) throws Exception {
+ if ("dataSource".equals(element.getNodeName())) {
+ Object instance =
+ DOMConfigurator.parseElement(element, props, DataSource.class);
+ if (instance instanceof DataSource) {
+ setDataSource((DataSource) instance);
+ }
+ return true;
+ }
+ return false;
+ }
}
Copied: logging/log4j/companions/receivers/trunk/src/main/java/org/apache/log4j/net/MulticastAppender.java (from r544496, logging/log4j/trunk/src/java/org/apache/log4j/net/MulticastAppender.java)
URL: http://svn.apache.org/viewvc/logging/log4j/companions/receivers/trunk/src/main/java/org/apache/log4j/net/MulticastAppender.java?view=diff&rev=544657&p1=logging/log4j/trunk/src/java/org/apache/log4j/net/MulticastAppender.java&r1=544496&p2=logging/log4j/companions/receivers/trunk/src/main/java/org/apache/log4j/net/MulticastAppender.java&r2=544657
==============================================================================
--- logging/log4j/trunk/src/java/org/apache/log4j/net/MulticastAppender.java (original)
+++ logging/log4j/companions/receivers/trunk/src/main/java/org/apache/log4j/net/MulticastAppender.java Tue Jun 5 15:07:58 2007
@@ -26,6 +26,7 @@
import org.apache.log4j.AppenderSkeleton;
import org.apache.log4j.helpers.Constants;
import org.apache.log4j.spi.LoggingEvent;
+import org.apache.log4j.helpers.LogLog;
/**
@@ -99,7 +100,7 @@
address = getAddressByName(remoteHost);
} else {
String err = "The RemoteHost property is required for SocketAppender named "+ name;
- getLogger().error(err);
+ LogLog.error(err);
throw new IllegalStateException(err);
}
@@ -130,7 +131,7 @@
try {
outSocket.close();
} catch (Exception e) {
- getLogger().error("Could not close outSocket.", e);
+ LogLog.error("Could not close outSocket.", e);
}
outSocket = null;
@@ -148,7 +149,7 @@
outSocket = new MulticastSocket();
outSocket.setTimeToLive(timeToLive);
} catch (IOException e) {
- getLogger().error("Error in connect method of MulticastAppender named "+name, e);
+ LogLog.error("Error in connect method of MulticastAppender named "+name, e);
}
}
@@ -187,7 +188,7 @@
event.setProperty(Constants.APPLICATION_KEY, null);
} catch (IOException e) {
outSocket = null;
- getLogger().warn("Detected problem with Multicast connection: " + e);
+ LogLog.warn("Detected problem with Multicast connection: " + e);
}
}
}
@@ -196,7 +197,7 @@
try {
return InetAddress.getByName(host);
} catch (Exception e) {
- getLogger().error("Could not find address of [" + host + "].", e);
+ LogLog.error("Could not find address of [" + host + "].", e);
return null;
}
}
Modified: logging/log4j/companions/receivers/trunk/src/main/java/org/apache/log4j/net/SocketHubReceiver.java
URL: http://svn.apache.org/viewvc/logging/log4j/companions/receivers/trunk/src/main/java/org/apache/log4j/net/SocketHubReceiver.java?view=diff&rev=544657&r1=544656&r2=544657
==============================================================================
--- logging/log4j/companions/receivers/trunk/src/main/java/org/apache/log4j/net/SocketHubReceiver.java (original)
+++ logging/log4j/companions/receivers/trunk/src/main/java/org/apache/log4j/net/SocketHubReceiver.java Tue Jun 5 15:07:58 2007
@@ -17,23 +17,16 @@
package org.apache.log4j.net;
+import org.apache.log4j.plugins.Plugin;
+import org.apache.log4j.plugins.Receiver;
+import org.apache.log4j.spi.LoggerRepository;
+
import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.BufferedInputStream;
import java.net.Socket;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
-import java.lang.reflect.Method;
-
-import org.apache.log4j.plugins.Plugin;
-import org.apache.log4j.plugins.Receiver;
-import org.apache.log4j.plugins.Pauseable;
-import org.apache.log4j.spi.LoggerRepository;
-import org.apache.log4j.spi.ComponentBase;
-import org.apache.log4j.spi.LoggingEvent;
-import org.apache.log4j.Logger;
/**
SocketHubReceiver receives a remote logging event on a configured
Copied: logging/log4j/companions/receivers/trunk/src/main/java/org/apache/log4j/net/UDPAppender.java (from r544496, logging/log4j/trunk/src/java/org/apache/log4j/net/UDPAppender.java)
URL: http://svn.apache.org/viewvc/logging/log4j/companions/receivers/trunk/src/main/java/org/apache/log4j/net/UDPAppender.java?view=diff&rev=544657&p1=logging/log4j/trunk/src/java/org/apache/log4j/net/UDPAppender.java&r1=544496&p2=logging/log4j/companions/receivers/trunk/src/main/java/org/apache/log4j/net/UDPAppender.java&r2=544657
==============================================================================
--- logging/log4j/trunk/src/java/org/apache/log4j/net/UDPAppender.java (original)
+++ logging/log4j/companions/receivers/trunk/src/main/java/org/apache/log4j/net/UDPAppender.java Tue Jun 5 15:07:58 2007
@@ -17,15 +17,17 @@
package org.apache.log4j.net;
+import org.apache.log4j.AppenderSkeleton;
+import org.apache.log4j.helpers.Constants;
+import org.apache.log4j.spi.LoggingEvent;
+import org.apache.log4j.helpers.LogLog;
+
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.UnknownHostException;
-import org.apache.log4j.AppenderSkeleton;
-import org.apache.log4j.helpers.*;
-import org.apache.log4j.spi.LoggingEvent;
/**
@@ -124,7 +126,7 @@
connect(address, port);
} else {
String err = "The RemoteHost property is required for SocketAppender named "+ name;
- getLogger().error(err);
+ LogLog.error(err);
throw new IllegalStateException(err);
}
super.activateOptions();
@@ -153,7 +155,7 @@
try {
outSocket.close();
} catch (Exception e) {
- getLogger().error("Could not close outSocket.", e);
+ LogLog.error("Could not close outSocket.", e);
}
outSocket = null;
@@ -171,7 +173,7 @@
outSocket = new DatagramSocket();
outSocket.connect(address, port);
} catch (IOException e) {
- getLogger().error(
+ LogLog.error(
"Could not open UDP Socket for sending.", e);
inError = true;
}
@@ -221,7 +223,7 @@
event.setProperty(Constants.APPLICATION_KEY, null);
} catch (IOException e) {
outSocket = null;
- getLogger().warn("Detected problem with UDP connection: " + e);
+ LogLog.warn("Detected problem with UDP connection: " + e);
}
}
}
@@ -234,7 +236,7 @@
try {
return InetAddress.getByName(host);
} catch (Exception e) {
- getLogger().error("Could not find address of [" + host + "].", e);
+ LogLog.error("Could not find address of [" + host + "].", e);
return null;
}
}
Copied: logging/log4j/companions/receivers/trunk/src/test/java/org/apache/log4j/db/FullCycleDBTest.java (from r544601, logging/log4j/trunk/tests/src/java/org/apache/log4j/db/FullCycleDBTest.java)
URL: http://svn.apache.org/viewvc/logging/log4j/companions/receivers/trunk/src/test/java/org/apache/log4j/db/FullCycleDBTest.java?view=diff&rev=544657&p1=logging/log4j/trunk/tests/src/java/org/apache/log4j/db/FullCycleDBTest.java&r1=544601&p2=logging/log4j/companions/receivers/trunk/src/test/java/org/apache/log4j/db/FullCycleDBTest.java&r2=544657
==============================================================================
--- logging/log4j/trunk/tests/src/java/org/apache/log4j/db/FullCycleDBTest.java (original)
+++ logging/log4j/companions/receivers/trunk/src/test/java/org/apache/log4j/db/FullCycleDBTest.java Tue Jun 5 15:07:58 2007
@@ -16,25 +16,32 @@
*/
package org.apache.log4j.db;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Vector;
-
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
-
import org.apache.log4j.Hierarchy;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.MDC;
import org.apache.log4j.VectorAppender;
+import org.apache.log4j.LoggerRepositoryExImpl;
import org.apache.log4j.helpers.Constants;
-import org.apache.log4j.joran.JoranConfigurator;
-import org.apache.log4j.spi.LoggerRepository;
+import org.apache.log4j.xml.DOMConfigurator;
+import org.apache.log4j.spi.LocationInfo;
import org.apache.log4j.spi.LoggingEvent;
import org.apache.log4j.spi.RootLogger;
-import org.apache.log4j.spi.LocationInfo;
+import org.apache.log4j.spi.LoggerRepository;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Vector;
+import java.util.HashMap;
+import java.io.InputStream;
+import java.io.IOException;
/**
@@ -54,7 +61,7 @@
Vector witnessEvents;
Hierarchy lrWrite;
- Hierarchy lrRead;
+ LoggerRepository lrRead;
String appendConfigFile = null;
String readConfigFile = null;
@@ -65,16 +72,54 @@
protected void setUp()
throws Exception {
super.setUp();
- appendConfigFile = System.getProperty("appendConfigFile");
- assertNotNull("[appendConfigFile] property must be set for this test", appendConfigFile);
- readConfigFile = System.getProperty("readConfigFile");
- assertNotNull("[readConfigFile] property must be set for this test", readConfigFile);
-
+ appendConfigFile = "append-with-drivermanager1.xml";
+ readConfigFile = "read-with-drivermanager1.xml";
+
witnessEvents = new Vector();
lrWrite = new Hierarchy(new RootLogger(Level.DEBUG));
- lrWrite.setName("lrWrite");
- lrRead = new Hierarchy(new RootLogger(Level.DEBUG));
- lrRead.setName("lrRead");
+ lrRead = new LoggerRepositoryExImpl(new Hierarchy(new RootLogger(Level.DEBUG)));
+
+
+ //
+ // attempt to define tables in in-memory database
+ // will throw exception if already defined.
+ //
+ Class.forName("org.hsqldb.jdbcDriver");
+ Connection connection = DriverManager.getConnection("jdbc:hsqldb:mem:testdb");
+ try {
+ Statement s = connection.createStatement();
+ s.executeUpdate("CREATE TABLE logging_event " +
+ "( sequence_number BIGINT NOT NULL, " +
+ " timestamp BIGINT NOT NULL, " +
+ " rendered_message LONGVARCHAR NOT NULL, " +
+ " logger_name VARCHAR NOT NULL, " +
+ " level_string VARCHAR NOT NULL, " +
+ " ndc LONGVARCHAR, " +
+ " thread_name VARCHAR, " +
+ " reference_flag SMALLINT, " +
+ " caller_filename VARCHAR, " +
+ " caller_class VARCHAR, " +
+ " caller_method VARCHAR, " +
+ " caller_line CHAR(4), " +
+ " event_id INT NOT NULL IDENTITY)");
+ s.executeUpdate("CREATE TABLE logging_event_property " +
+ "( event_id INT NOT NULL, " +
+ " mapped_key VARCHAR(254) NOT NULL, " +
+ " mapped_value LONGVARCHAR, " +
+ " PRIMARY KEY(event_id, mapped_key), " +
+ " FOREIGN KEY (event_id) REFERENCES logging_event(event_id))");
+ s.executeUpdate("CREATE TABLE logging_event_exception" +
+ " ( event_id INT NOT NULL, " +
+ " i SMALLINT NOT NULL," +
+ " trace_line VARCHAR NOT NULL," +
+ " PRIMARY KEY(event_id, i)," +
+ " FOREIGN KEY (event_id) REFERENCES logging_event(event_id))");
+ } catch(SQLException ex) {
+ String s = ex.toString();
+ } finally {
+ connection.close();
+ }
+
}
@@ -106,12 +151,14 @@
*/
public void testSingleOutput()
throws Exception {
- JoranConfigurator jc1 = new JoranConfigurator();
- jc1.doConfigure(appendConfigFile, lrWrite);
+ DOMConfigurator jc1 = new DOMConfigurator();
+ InputStream is = FullCycleDBTest.class.getResourceAsStream(appendConfigFile);
+ jc1.doConfigure(is, lrWrite);
+ is.close();
long startTime = System.currentTimeMillis();
System.out.println("***startTime is "+startTime);
-
+
// Write out just one log message
Logger out = lrWrite.getLogger("testSingleOutput.out");
out.debug("some message"+startTime);
@@ -138,21 +185,22 @@
* DB related information is specified within the configuration files.
* @throws Exception
*/
- public void testAllFields() {
- JoranConfigurator jc1 = new JoranConfigurator();
- jc1.doConfigure(appendConfigFile, lrWrite);
+ public void testAllFields() throws IOException {
+ DOMConfigurator jc1 = new DOMConfigurator();
+ InputStream is = FullCycleDBTest.class.getResourceAsStream(appendConfigFile);
+ jc1.doConfigure(is, lrWrite);
+ is.close();
long startTime = System.currentTimeMillis();
// Write out just one log message
- lrWrite.setProperty("key1", "value1-"+startTime);
+ MDC.put("key1", "value1-"+startTime);
MDC.put("key2", "value2-"+startTime);
Map mdcMap = MDC.getContext();
// LogLog.info("**********"+mdcMap.size());
// Write out just one log message
Logger out = lrWrite.getLogger("out"+startTime);
- long sn = LoggingEvent.getSequenceCount();
out.debug("some message"+startTime);
MDC.put("key3", "value2-"+startTime);
@@ -160,7 +208,9 @@
// we clear the MDC to avoid interference with the events read back from
// the db
- MDC.clear();
+ MDC.remove("key1");
+ MDC.remove("key2");
+ MDC.remove("key3");
VectorAppender witnessAppender = (VectorAppender) lrWrite.getRootLogger().getAppender("VECTOR");
witnessEvents = witnessAppender.getVector();
@@ -173,9 +223,11 @@
}
- void readBack(String configfile, long startTime) {
- JoranConfigurator jc2 = new JoranConfigurator();
- jc2.doConfigure(configfile, lrRead);
+ void readBack(String configfile, long startTime) throws IOException {
+ DOMConfigurator jc2 = new DOMConfigurator();
+ InputStream is = FullCycleDBTest.class.getResourceAsStream(configfile);
+ jc2.doConfigure(is, lrRead);
+ is.close();
// wait a little to allow events to be read
try { Thread.sleep(3100); } catch(Exception e) {}
@@ -194,25 +246,30 @@
LoggingEvent le = (LoggingEvent) l.get(i);
LoggingEvent re = (LoggingEvent) r.get(i);
assertEquals(le.getMessage(), re.getMessage());
- assertEquals(le.getSequenceNumber(), re.getSequenceNumber());
assertEquals(le.getLoggerName(), re.getLoggerName());
assertEquals(le.getLevel(), re.getLevel());
assertEquals(le.getThreadName(), re.getThreadName());
if(re.getTimeStamp() < le.getTimeStamp()) {
fail("Returned event cannot preceed witness timestamp");
}
-
- if((re.getProperties() != null) && re.getProperties().containsKey(Constants.LOG4J_ID_KEY)) {
- re.getProperties().remove(Constants.LOG4J_ID_KEY);
+
+ Map sourceMap = re.getProperties();
+ Map remap;
+ if (sourceMap == null) {
+ remap = new HashMap();
+ } else {
+ remap = new HashMap(sourceMap);
+ if (remap.containsKey(Constants.LOG4J_ID_KEY)) {
+ remap.remove(Constants.LOG4J_ID_KEY);
+ }
}
-
if(le.getProperties() == null || le.getProperties().size() == 0) {
- if(!(re.getProperties() == null || re.getProperties().size() == 0)) {
- System.out.println("properties are "+re.getProperties());
+ if(remap.size() != 0) {
+ System.out.println("properties are "+remap);
fail("Returned event should have been empty");
}
} else {
- assertEquals(le.getProperties(), re.getProperties());
+ assertEquals(le.getProperties(), remap);
}
comprareStringArrays( le.getThrowableStrRep(), re.getThrowableStrRep());
compareLocationInfo(le, re);
@@ -231,7 +288,7 @@
void compareLocationInfo(LoggingEvent l, LoggingEvent r) {
if(l.locationInformationExists()) {
- assertEquals(l.getLocationInformation(), r.getLocationInformation());
+ assertEquals(l.getLocationInformation().fullInfo, r.getLocationInformation().fullInfo);
} else {
assertEquals(LocationInfo.NA_LOCATION_INFO, r.getLocationInformation());
}
Copied: logging/log4j/companions/receivers/trunk/src/test/resources/org/apache/log4j/db/append-with-drivermanager1.xml (from r544602, logging/log4j/trunk/tests/input/db/append-with-drivermanager1.xml)
URL: http://svn.apache.org/viewvc/logging/log4j/companions/receivers/trunk/src/test/resources/org/apache/log4j/db/append-with-drivermanager1.xml?view=diff&rev=544657&p1=logging/log4j/trunk/tests/input/db/append-with-drivermanager1.xml&r1=544602&p2=logging/log4j/companions/receivers/trunk/src/test/resources/org/apache/log4j/db/append-with-drivermanager1.xml&r2=544657
==============================================================================
--- logging/log4j/trunk/tests/input/db/append-with-drivermanager1.xml (original)
+++ logging/log4j/companions/receivers/trunk/src/test/resources/org/apache/log4j/db/append-with-drivermanager1.xml Tue Jun 5 15:07:58 2007
@@ -1,17 +1,32 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE log4j:configuration>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+-->
+<!DOCTYPE log4j:configuration SYSTEM 'http://logging.apache.org/log4j/1.2/log4j.dtd'>
-<log4j:configuration xmlns:log4j='http://logging.apache.org/' debug="true">
+<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/' debug="true">
- <substitutionProperty file="input/db/db.properties"/>
-
<appender name="DB" class="org.apache.log4j.db.DBAppender">
<param name="locationInfo" value="true"/>
<connectionSource class="org.apache.log4j.db.DriverManagerConnectionSource">
- <param name="driverClass" value="${driverClass}"/>
- <param name="url" value="${url}"/>
- <param name="user" value="${user}"/>
- <param name="password" value="${password}"/>
+ <param name="driverClass" value="org.hsqldb.jdbcDriver"/>
+ <param name="url" value="jdbc:hsqldb:mem:testdb"/>
+ <param name="user" value="sa"/>
+ <param name="password" value=""/>
</connectionSource>
</appender>
Copied: logging/log4j/companions/receivers/trunk/src/test/resources/org/apache/log4j/db/read-with-drivermanager1.xml (from r544602, logging/log4j/trunk/tests/input/db/read-with-drivermanager1.xml)
URL: http://svn.apache.org/viewvc/logging/log4j/companions/receivers/trunk/src/test/resources/org/apache/log4j/db/read-with-drivermanager1.xml?view=diff&rev=544657&p1=logging/log4j/trunk/tests/input/db/read-with-drivermanager1.xml&r1=544602&p2=logging/log4j/companions/receivers/trunk/src/test/resources/org/apache/log4j/db/read-with-drivermanager1.xml&r2=544657
==============================================================================
--- logging/log4j/trunk/tests/input/db/read-with-drivermanager1.xml (original)
+++ logging/log4j/companions/receivers/trunk/src/test/resources/org/apache/log4j/db/read-with-drivermanager1.xml Tue Jun 5 15:07:58 2007
@@ -1,20 +1,25 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE configuration>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
-<configuration xmlns='http://logging.apache.org/' debug="true">
-
- <substitutionProperty file="input/db/db.properties"/>
-
- <plugin name="DB" class="org.apache.log4j.db.DBReceiver">
- <connectionSource class="org.apache.log4j.db.DriverManagerConnectionSource">
- <param name="driverClass" value="${driverClass}"/>
- <param name="url" value="${url}"/>
- <param name="user" value="${user}"/>
- <param name="password" value="${password}"/>
- </connectionSource>
- </plugin>
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<!DOCTYPE log4j:configuration SYSTEM 'http://logging.apache.org/log4j/1.2/log4j.dtd'>
+<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/' debug="true">
+
<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="READING %relative %level %logger - %message%n"/>
@@ -23,6 +28,16 @@
<appender name="VECTOR" class="org.apache.log4j.VectorAppender">
</appender>
+
+ <plugin name="DB" class="org.apache.log4j.db.DBReceiver">
+ <connectionSource class="org.apache.log4j.db.DriverManagerConnectionSource">
+ <param name="driverClass" value="org.hsqldb.jdbcDriver"/>
+ <param name="url" value="jdbc:hsqldb:mem:testdb"/>
+ <param name="user" value="sa"/>
+ <param name="password" value=""/>
+ </connectionSource>
+ </plugin>
+
<!-- Prevent internal log4j DEBUG messages from polluting the output. -->
<logger name="org.apache.log4j.joran"><level value="INFO" /></logger>
@@ -34,7 +49,7 @@
<appender-ref ref="VECTOR" />
<appender-ref ref="CONSOLE" />
</root>
-</configuration>
+</log4j:configuration>
---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-dev-help@logging.apache.org