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