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 ce...@apache.org on 2004/05/21 20:45:07 UTC
cvs commit: logging-log4j/tests/src/java/org/apache/log4j/db DBPerfTest.java
ceki 2004/05/21 11:45:07
Modified: src/java/org/apache/log4j/helpers Constants.java
src/java/org/apache/log4j/db DBReceiver.java
ConnectionSource.java
DataSourceConnectionSource.java DBAppender.java
src/java/org/apache/log4j/chainsaw
ChainsawCyclicBufferTableModel.java
ChainsawConstants.java ColumnComparator.java
Added: src/java/org/apache/log4j/db DBReceiverJob.java
tests/src/java/org/apache/log4j/db DBPerfTest.java
Log:
- In order to avoid having DBReceiver depend on vhainsaw, moved the
LOG4J_ID_KEY from ChainsawConstants to o.a.l.helpers.Constants interface.
- Moved DBReceiverJob to its own class. This avoids nasty bugs caused by
jalopy which does not seem to handle inner classes very well.
- DBReceivernow adds a log4jid property on the incoming events. (requested by Scott)
Revision Changes Path
1.5 +2 -1 logging-log4j/src/java/org/apache/log4j/helpers/Constants.java
Index: Constants.java
===================================================================
RCS file: /home/cvs/logging-log4j/src/java/org/apache/log4j/helpers/Constants.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- Constants.java 30 Mar 2004 10:45:21 -0000 1.4
+++ Constants.java 21 May 2004 18:45:07 -0000 1.5
@@ -23,7 +23,8 @@
public interface Constants {
static final String APPLICATION_KEY = "application";
static final String HOSTNAME_KEY = "hostname";
-
+ static final String LOG4J_ID_KEY = "log4jid";
+
/*
* The default property file name for automatic configuration.
*/
1.9 +12 -187 logging-log4j/src/java/org/apache/log4j/db/DBReceiver.java
Index: DBReceiver.java
===================================================================
RCS file: /home/cvs/logging-log4j/src/java/org/apache/log4j/db/DBReceiver.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- DBReceiver.java 21 May 2004 16:13:43 -0000 1.8
+++ DBReceiver.java 21 May 2004 18:45:07 -0000 1.9
@@ -1,12 +1,12 @@
/*
* Copyright 1999,2004 The Apache Software Foundation.
- *
+ *
* Licensed 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.
@@ -16,24 +16,11 @@
package org.apache.log4j.db;
-import java.sql.Connection;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.sql.Statement;
-
-import org.apache.log4j.Level;
import org.apache.log4j.LogManager;
-import org.apache.log4j.Logger;
import org.apache.log4j.helpers.LogLog;
import org.apache.log4j.plugins.Pauseable;
import org.apache.log4j.plugins.Receiver;
-import org.apache.log4j.scheduler.Job;
import org.apache.log4j.scheduler.Scheduler;
-import org.apache.log4j.spi.LocationInfo;
-import org.apache.log4j.spi.LoggerRepository;
-import org.apache.log4j.spi.LoggingEvent;
-import org.apache.log4j.spi.ThrowableInformation;
-
/**
*
@@ -41,40 +28,36 @@
* @author Ceki Gülcü
*
*/
-public class DBReceiver
- extends Receiver
- implements Pauseable {
-
+public class DBReceiver extends Receiver implements Pauseable {
/**
* By default we refresh data every 1000 milliseconds.
* @see #setRefreshMillis
*/
static int DEFAULT_REFRESH_MILLIS = 1000;
-
ConnectionSource connectionSource;
int refreshMillis = DEFAULT_REFRESH_MILLIS;
DBReceiverJob receiverJob;
boolean paused = false;
-
+
public void activateOptions() {
if (connectionSource != null) {
LogLog.info("activating connectionSource");
connectionSource.activateOptions();
- receiverJob = new DBReceiverJob();
+ receiverJob = new DBReceiverJob(this);
+
Scheduler scheduler = LogManager.getSchedulerInstance();
- scheduler.schedule(receiverJob, System.currentTimeMillis()+500, refreshMillis);
-
+ scheduler.schedule(
+ receiverJob, System.currentTimeMillis() + 500, refreshMillis);
} else {
- throw new IllegalStateException("DBAppender cannot function without a connection source");
+ throw new IllegalStateException(
+ "DBAppender cannot function without a connection source");
}
}
-
public void setRefreshMillis(int refreshMillis) {
this.refreshMillis = refreshMillis;
}
-
public int getRefreshMillis() {
return refreshMillis;
}
@@ -101,6 +84,7 @@
*/
public void shutdown() {
LogLog.info("removing receiverJob from the Scheduler.");
+
Scheduler scheduler = LogManager.getSchedulerInstance();
scheduler.delete(receiverJob);
}
@@ -118,164 +102,5 @@
*/
public boolean isPaused() {
return paused;
- }
-
- /**
- * Actual retrieval of data is made by the instance of DBReceiverJob associated
- * with DBReceiver.
- *
- * @author Ceki Gülcü
- */
- class DBReceiverJob implements Job {
-
- long lastId = 0;
-
-
- public void execute() {
- LogLog.info("DBReceiverJob.execute() called");
- Connection connection = null;
- try {
- Logger logger;
- LoggerRepository loggerRepository = getLoggerRepository();
- connection = connectionSource.getConnection();
- StringBuffer sql = new StringBuffer();
- sql.append("SELECT ");
- sql.append("sequence_number, ");
- sql.append("timestamp, ");
- sql.append("rendered_message, ");
- sql.append("logger_name, ");
- sql.append("level_string, ");
- sql.append("ndc, ");
- sql.append("thread_name, ");
- sql.append("reference_flag, ");
- sql.append("caller_filename, ");
- sql.append("caller_class, ");
- sql.append("caller_method, ");
- sql.append("caller_line, ");
- sql.append("event_id ");
- sql.append("FROM logging_event ");
- // have subsequent SELECTs start from we left off last time
- sql.append(" WHERE event_id > "+lastId);
- sql.append(" ORDER BY event_id ASC");
-
- Statement statement = connection.createStatement();
- ResultSet rs = statement.executeQuery(sql.toString());
- rs.beforeFirst();
-
- while (rs.next()) {
- LoggingEvent event = new LoggingEvent();
- long id;
- event.setSequenceNumber(rs.getLong(1));
- event.setTimeStamp(rs.getLong(2));
- event.setRenderedMessage(rs.getString(3));
- event.setLoggerName(rs.getString(4));
-
- String levelStr = rs.getString(5);
-
- // TODO CG The conversion of levelStr should be more general
- Level level = Level.toLevel(levelStr);
- event.setLevel(level);
- event.setNDC(rs.getString(6));
- event.setThreadName(rs.getString(7));
-
-
-
- short mask = rs.getShort(8);
-
- String fileName = rs.getString(9);
- String className = rs.getString(10);
- String methodName = rs.getString(11);
- String lineNumber = rs.getString(12).trim();
-
- if(fileName.equals(LocationInfo.NA)) {
- event.setLocationInformation(LocationInfo.NA_LOCATION_INFO);
- } else {
- event.setLocationInformation(new LocationInfo(fileName, className,
- methodName, lineNumber));
- }
-
- id = rs.getLong(13);
- lastId = id;
-
- if ((mask & DBHelper.PROPERTIES_EXIST) != 0) {
- getProperties(connection, id, event);
- }
-
- if ((mask & DBHelper.EXCEPTION_EXISTS) != 0) {
- getException(connection, id, event);
- }
-
- if (! DBReceiver.this.isPaused()) {
- DBReceiver.this.doPost(event);
- }
-
- }
- } catch (SQLException sqle) {
- LogLog.error("Problem receiving events", sqle);
- } finally {
- closeConnection(connection);
- }
- }
- }
-
- void closeConnection(Connection connection) {
- if(connection != null) {
- try {
- connection.close();
- } catch(SQLException sqle) {
- LogLog.warn("Failed to close connection.");
- }
- }
- }
-
- /**
- * Retrieve the event properties from the logging_event_property table.
- *
- * @param connection
- * @param id
- * @param event
- * @throws SQLException
- */
- void getProperties(Connection connection, long id, LoggingEvent event)
- throws SQLException {
- String sql = "SELECT mapped_key, mapped_value FROM logging_event_property WHERE event_id='" + id + "'";
- Statement statement = connection.createStatement();
- ResultSet rs = statement.executeQuery(sql);
- rs.beforeFirst();
-
- while (rs.next()) {
- String key = rs.getString(1);
- String value = rs.getString(2);
- event.setProperty(key, value);
- }
- }
-
- /**
- * Retrieve the exception string representation from the logging_event_exception
- * table.
- *
- * @param connection
- * @param id
- * @param event
- * @throws SQLException
- */
- void getException(Connection connection, long id, LoggingEvent event)
- throws SQLException {
- String sql = "SELECT i, trace_line FROM logging_event_exception where event_id='" + id + "'";
- Statement statement = connection.createStatement();
- ResultSet rs = statement.executeQuery(sql);
-
- // if rs has results, then extract the exception
- if(rs.last()) {
- int len = rs.getRow();
- String[] strRep = new String[len];
- rs.beforeFirst();
- while (rs.next()) {
- int i = rs.getShort(1);
- strRep[i] = rs.getString(2);
- }
- // we've filled strRep, we now attach it to the event
- event.setThrowableInformation(new ThrowableInformation(strRep));
- }
}
}
1.5 +1 -0 logging-log4j/src/java/org/apache/log4j/db/ConnectionSource.java
Index: ConnectionSource.java
===================================================================
RCS file: /home/cvs/logging-log4j/src/java/org/apache/log4j/db/ConnectionSource.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- ConnectionSource.java 20 May 2004 15:37:59 -0000 1.4
+++ ConnectionSource.java 21 May 2004 18:45:07 -0000 1.5
@@ -61,4 +61,5 @@
*
*/
int getSQLDialectCode();
+
}
1.5 +10 -3 logging-log4j/src/java/org/apache/log4j/db/DataSourceConnectionSource.java
Index: DataSourceConnectionSource.java
===================================================================
RCS file: /home/cvs/logging-log4j/src/java/org/apache/log4j/db/DataSourceConnectionSource.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- DataSourceConnectionSource.java 20 May 2004 15:37:59 -0000 1.4
+++ DataSourceConnectionSource.java 21 May 2004 18:45:07 -0000 1.5
@@ -48,12 +48,19 @@
errorHandler.error("WARNING: No data source specified");
}
} else {
+ Connection connection = null;
try {
- Connection connection = getConnection();
- dialectCode = Util.discoverSQLDialect(connection);
+ connection = getConnection();
} catch(SQLException se) {
- LogLog.warn("Could not discover the dialect to use.", se);
+ LogLog.warn("Could not get a connection to discover the dialect to use.", se);
+ }
+ if(connection != null) {
+ dialectCode = Util.discoverSQLDialect(connection);
+ }
+ if(dialectCode == ConnectionSource.UNKNOWN_DIALECT) {
+ LogLog.warn("Could not get a discover the dialect.");
}
+
}
}
1.11 +8 -1 logging-log4j/src/java/org/apache/log4j/db/DBAppender.java
Index: DBAppender.java
===================================================================
RCS file: /home/cvs/logging-log4j/src/java/org/apache/log4j/db/DBAppender.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- DBAppender.java 21 May 2004 16:13:43 -0000 1.10
+++ DBAppender.java 21 May 2004 18:45:07 -0000 1.11
@@ -132,11 +132,14 @@
insertStatement.setString(12, li.getLineNumber());
int updateCount = insertStatement.executeUpdate();
-
if (updateCount != 1) {
LogLog.warn("Failed to insert loggingEvent");
}
+ // close the statement
+ insertStatement.close();
+ insertStatement = null;
+
Statement idStatement = connection.createStatement();
idStatement.setMaxRows(1);
@@ -169,6 +172,8 @@
}
insertPropertiesStatement.executeBatch();
+ insertPropertiesStatement.close();
+ insertPropertiesStatement = null;
}
String[] strRep = event.getThrowableStrRep();
@@ -194,6 +199,8 @@
}
insertExceptionStatement.executeBatch();
+ insertExceptionStatement.close();
+ insertExceptionStatement = null;
}
connection.commit();
1.1 logging-log4j/src/java/org/apache/log4j/db/DBReceiverJob.java
Index: DBReceiverJob.java
===================================================================
/*
* Copyright 1999,2004 The Apache Software Foundation.
*
* Licensed 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.
*/
package org.apache.log4j.db;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.helpers.Constants;
import org.apache.log4j.helpers.LogLog;
import org.apache.log4j.scheduler.Job;
import org.apache.log4j.spi.LocationInfo;
import org.apache.log4j.spi.LoggerRepository;
import org.apache.log4j.spi.LoggingEvent;
import org.apache.log4j.spi.ThrowableInformation;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/**
* Actual retrieval of data is made by the instance of DBReceiverJob associated
* with DBReceiver.
*
* @author Ceki Gülcü
*/
class DBReceiverJob implements Job {
static final Logger logger = Logger.getLogger(DBReceiverJob.class);
long lastId = 0;
DBReceiver parentDBReceiver;
DBReceiverJob(DBReceiver parent) {
parentDBReceiver = parent;
}
public void execute() {
LogLog.info("DBReceiverJob.execute() called");
Connection connection = null;
try {
Logger logger;
LoggerRepository loggerRepository =
parentDBReceiver.getLoggerRepository();
connection = parentDBReceiver.connectionSource.getConnection();
StringBuffer sql = new StringBuffer();
sql.append("SELECT ");
sql.append("sequence_number, ");
sql.append("timestamp, ");
sql.append("rendered_message, ");
sql.append("logger_name, ");
sql.append("level_string, ");
sql.append("ndc, ");
sql.append("thread_name, ");
sql.append("reference_flag, ");
sql.append("caller_filename, ");
sql.append("caller_class, ");
sql.append("caller_method, ");
sql.append("caller_line, ");
sql.append("event_id ");
sql.append("FROM logging_event ");
// have subsequent SELECTs start from we left off last time
sql.append(" WHERE event_id > " + lastId);
sql.append(" ORDER BY event_id ASC");
Statement statement = connection.createStatement();
ResultSet rs = statement.executeQuery(sql.toString());
rs.beforeFirst();
while (rs.next()) {
LoggingEvent event = new LoggingEvent();
long id;
event.setSequenceNumber(rs.getLong(1));
event.setTimeStamp(rs.getLong(2));
event.setRenderedMessage(rs.getString(3));
event.setLoggerName(rs.getString(4));
String levelStr = rs.getString(5);
// TODO CG The conversion of levelStr should be more general
Level level = Level.toLevel(levelStr);
event.setLevel(level);
event.setNDC(rs.getString(6));
event.setThreadName(rs.getString(7));
short mask = rs.getShort(8);
String fileName = rs.getString(9);
String className = rs.getString(10);
String methodName = rs.getString(11);
String lineNumber = rs.getString(12).trim();
if (fileName.equals(LocationInfo.NA)) {
event.setLocationInformation(LocationInfo.NA_LOCATION_INFO);
} else {
event.setLocationInformation(
new LocationInfo(fileName, className, methodName, lineNumber));
}
id = rs.getLong(13);
lastId = id;
// Scott asked for this info to be
event.setProperty(Constants.LOG4J_ID_KEY, Long.toString(id));
if ((mask & DBHelper.PROPERTIES_EXIST) != 0) {
getProperties(connection, id, event);
}
if ((mask & DBHelper.EXCEPTION_EXISTS) != 0) {
getException(connection, id, event);
}
if (!parentDBReceiver.isPaused()) {
parentDBReceiver.doPost(event);
}
} // while
statement.close();
statement = null;
} catch (SQLException sqle) {
LogLog.error("Problem receiving events", sqle);
} finally {
closeConnection(connection);
}
}
void closeConnection(Connection connection) {
if (connection != null) {
try {
//LogLog.warn("closing the connection. ", new Exception("x"));
connection.close();
} catch (SQLException sqle) {
// nothing we can do here
}
}
}
/**
* Retrieve the event properties from the logging_event_property table.
*
* @param connection
* @param id
* @param event
* @throws SQLException
*/
void getProperties(Connection connection, long id, LoggingEvent event)
throws SQLException {
String sql =
"SELECT mapped_key, mapped_value FROM logging_event_property WHERE event_id='"
+ id + "'";
Statement statement = null;
try {
statement = connection.createStatement();
ResultSet rs = statement.executeQuery(sql);
rs.beforeFirst();
while (rs.next()) {
String key = rs.getString(1);
String value = rs.getString(2);
event.setProperty(key, value);
}
} finally {
if (statement != null) {
statement.close();
}
}
}
/**
* Retrieve the exception string representation from the logging_event_exception
* table.
*
* @param connection
* @param id
* @param event
* @throws SQLException
*/
void getException(Connection connection, long id, LoggingEvent event)
throws SQLException {
String sql =
"SELECT i, trace_line FROM logging_event_exception where event_id='"
+ id + "'";
Statement statement = null;
try {
statement = connection.createStatement();
ResultSet rs = statement.executeQuery(sql);
// if rs has results, then extract the exception
if (rs.last()) {
int len = rs.getRow();
String[] strRep = new String[len];
rs.beforeFirst();
while (rs.next()) {
int i = rs.getShort(1);
strRep[i] = rs.getString(2);
}
// we've filled strRep, we now attach it to the event
event.setThrowableInformation(new ThrowableInformation(strRep));
}
} finally {
if (statement != null) {
statement.close();
}
}
}
}
1.31 +6 -5 logging-log4j/src/java/org/apache/log4j/chainsaw/ChainsawCyclicBufferTableModel.java
Index: ChainsawCyclicBufferTableModel.java
===================================================================
RCS file: /home/cvs/logging-log4j/src/java/org/apache/log4j/chainsaw/ChainsawCyclicBufferTableModel.java,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -r1.30 -r1.31
--- ChainsawCyclicBufferTableModel.java 17 May 2004 06:17:59 -0000 1.30
+++ ChainsawCyclicBufferTableModel.java 21 May 2004 18:45:07 -0000 1.31
@@ -16,6 +16,7 @@
package org.apache.log4j.chainsaw;
+import org.apache.log4j.helpers.Constants;
import org.apache.log4j.helpers.LogLog;
import org.apache.log4j.rule.Rule;
import org.apache.log4j.spi.LocationInfo;
@@ -337,7 +338,7 @@
switch (columnIndex + 1) {
case ChainsawColumns.INDEX_ID_COL_NAME:
- Object id = event.getProperty(ChainsawConstants.LOG4J_ID_KEY);
+ Object id = event.getProperty(Constants.LOG4J_ID_KEY);
if (id != null) {
return id;
@@ -403,11 +404,11 @@
public boolean isAddRow(LoggingEvent e, boolean valueIsAdjusting) {
boolean rowAdded = false;
- Object id = e.getProperty(ChainsawConstants.LOG4J_ID_KEY);
+ Object id = e.getProperty(Constants.LOG4J_ID_KEY);
if (id == null) {
id = new Integer(++uniqueRow);
- e.setProperty(ChainsawConstants.LOG4J_ID_KEY, id.toString());
+ e.setProperty(Constants.LOG4J_ID_KEY, id.toString());
}
//prevent duplicate rows
@@ -439,7 +440,7 @@
Object key = iter.next();
//add all keys except the 'log4jid' key
- if (!columnNames.contains(key) && !(ChainsawConstants.LOG4J_ID_KEY.equalsIgnoreCase(key.toString()))) {
+ if (!columnNames.contains(key) && !(Constants.LOG4J_ID_KEY.equalsIgnoreCase(key.toString()))) {
columnNames.add(key);
LogLog.debug("Adding col '" + key + "', columNames=" + columnNames);
fireNewKeyColumnAdded(
@@ -626,7 +627,7 @@
Object o =
e.getProperty(
- e.getProperty(ChainsawConstants.LOG4J_ID_KEY));
+ e.getProperty(Constants.LOG4J_ID_KEY));
if (o != null) {
newIDSet.add(o);
1.12 +0 -1 logging-log4j/src/java/org/apache/log4j/chainsaw/ChainsawConstants.java
Index: ChainsawConstants.java
===================================================================
RCS file: /home/cvs/logging-log4j/src/java/org/apache/log4j/chainsaw/ChainsawConstants.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- ChainsawConstants.java 14 May 2004 02:43:08 -0000 1.11
+++ ChainsawConstants.java 21 May 2004 18:45:07 -0000 1.12
@@ -72,7 +72,6 @@
//none is not a real column name, but is used by filters as a way to apply no filter for colors or display
static final String NONE_COL_NAME = "None";
static final String LOG4J_REMOTEHOST_KEY = "log4j.remoteSourceInfo";
- public static final String LOG4J_ID_KEY = "log4jid";
static final String UNKNOWN_TAB_NAME = "Unknown";
static final String GLOBAL_MATCH = "*";
public static final String DETAIL_CONTENT_TYPE = "text/html";
1.8 +3 -2 logging-log4j/src/java/org/apache/log4j/chainsaw/ColumnComparator.java
Index: ColumnComparator.java
===================================================================
RCS file: /home/cvs/logging-log4j/src/java/org/apache/log4j/chainsaw/ColumnComparator.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- ColumnComparator.java 10 May 2004 22:26:44 -0000 1.7
+++ ColumnComparator.java 21 May 2004 18:45:07 -0000 1.8
@@ -18,6 +18,7 @@
import java.util.Comparator;
+import org.apache.log4j.helpers.Constants;
import org.apache.log4j.spi.LoggingEvent;
@@ -120,8 +121,8 @@
break;
case ChainsawColumns.INDEX_ID_COL_NAME:
- int id1 = Integer.parseInt(e1.getProperty(ChainsawConstants.LOG4J_ID_KEY));
- int id2 = Integer.parseInt(e2.getProperty(ChainsawConstants.LOG4J_ID_KEY));
+ int id1 = Integer.parseInt(e1.getProperty(Constants.LOG4J_ID_KEY));
+ int id2 = Integer.parseInt(e2.getProperty(Constants.LOG4J_ID_KEY));
if (id1 == id2) {
sort = 0;
} else if (id1 < id2) {
1.1 logging-log4j/tests/src/java/org/apache/log4j/db/DBPerfTest.java
Index: DBPerfTest.java
===================================================================
/*
* Created on May 21, 2004
*
* To change the template for this generated file go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
package org.apache.log4j.db;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.apache.log4j.helpers.LogLog;
import org.apache.log4j.joran.JoranConfigurator;
import junit.framework.TestCase;
/**
* @author ceki
*
* To change the template for this generated type comment go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
public class DBPerfTest extends TestCase {
final static Logger logger = Logger.getLogger(DBPerfTest.class);
String appendConfigFile;
public DBPerfTest(String arg0) {
super(arg0);
}
protected void setUp() throws Exception {
//appendConfigFile = System.getProperty("appendConfigFile");
//assertNotNull("[appendConfigFile] property must be set for this test", appendConfigFile);
}
protected void tearDown() throws Exception {
super.tearDown();
}
public void testLoop() {
//appendConfigFile = "./input/db/append-with-drivermanager1.xml";
appendConfigFile = "./input/db/append-with-pooled-datasource1.xml";
//appendConfigFile = "./input/db/append-with-c3p0.xml";
JoranConfigurator jc1 = new JoranConfigurator();
jc1.doConfigure(appendConfigFile, LogManager.getLoggerRepository());
long startTime = System.currentTimeMillis();
int i;
for(i = 0; i < 500; i++) {
logger.debug("message "+i);
}
long endTime = System.currentTimeMillis();
LogLog.info("writing "+i+" events took "+(endTime-startTime)+" millis.");
LogLog.info("or "+(endTime-startTime)/i+" millis per event.");
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-dev-help@logging.apache.org