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/10 19:26:58 UTC
cvs commit: logging-log4j/src/java/org/apache/log4j/db DBHelper.java DBAppender.java
ceki 2004/05/10 10:26:58
Modified: src/java/org/apache/log4j/db/dialect postgresql.sql
mysql.sql oracle.sql
src/java/org/apache/log4j/db DBAppender.java
Added: src/java/org/apache/log4j/db DBHelper.java
Log:
Added support for exceptions (stack traces) in their own table.
Revision Changes Path
1.4 +1 -1 logging-log4j/src/java/org/apache/log4j/db/dialect/postgresql.sql
Index: postgresql.sql
===================================================================
RCS file: /home/cvs/logging-log4j/src/java/org/apache/log4j/db/dialect/postgresql.sql,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- postgresql.sql 10 May 2004 09:30:14 -0000 1.3
+++ postgresql.sql 10 May 2004 17:26:58 -0000 1.4
@@ -19,7 +19,7 @@
level_string VARCHAR(254) NOT NULL,
ndc TEXT,
thread_name VARCHAR(254),
- flag SMALLINT,
+ reference_flag SMALLINT,
id INT DEFAULT nextval('logging_event_id_seq') PRIMARY KEY
);
1.4 +4 -3 logging-log4j/src/java/org/apache/log4j/db/dialect/mysql.sql
Index: mysql.sql
===================================================================
RCS file: /home/cvs/logging-log4j/src/java/org/apache/log4j/db/dialect/mysql.sql,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- mysql.sql 10 May 2004 09:30:14 -0000 1.3
+++ mysql.sql 10 May 2004 17:26:58 -0000 1.4
@@ -6,8 +6,9 @@
BEGIN;
-DROP TABLE IF EXISTS loggging_event;
-DROP TABLE IF EXISTS mdc;
+DROP TABLE IF EXISTS logging_event;
+DROP TABLE IF EXISTS logging_event_property;
+DROP TABLE IF EXISTS logging_event_exception;
COMMIT;
@@ -21,7 +22,7 @@
level_string VARCHAR(254) NOT NULL,
ndc TEXT,
thread_name VARCHAR(254),
- flag SMALLINT,
+ reference_flag SMALLINT,
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY
);
COMMIT;
1.5 +11 -0 logging-log4j/src/java/org/apache/log4j/db/dialect/oracle.sql
Index: oracle.sql
===================================================================
RCS file: /home/cvs/logging-log4j/src/java/org/apache/log4j/db/dialect/oracle.sql,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- oracle.sql 10 May 2004 09:30:14 -0000 1.4
+++ oracle.sql 10 May 2004 17:26:58 -0000 1.5
@@ -20,6 +20,7 @@
level_string VARCHAR(254) NOT NULL,
ndc TEXT,
thread_name VARCHAR(254),
+ reference_flag SMALLINT,
id INT PRIMARY KEY
);
@@ -40,6 +41,16 @@
PRIMARY KEY(event_id, mapped_key),
FOREIGN KEY (event_id) REFERENCES logging_event(id)
);
+
+CREATE TABLE logging_event_exception
+ (
+ event_id INT NOT NULL,
+ i SMALLINT NOT NULL,
+ trace_line VARCHAR(254) NOT NULL,
+ PRIMARY KEY(event_id, i),
+ FOREIGN KEY (event_id) REFERENCES logging_event(id)
+ );
+
1.5 +29 -16 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.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- DBAppender.java 10 May 2004 09:40:08 -0000 1.4
+++ DBAppender.java 10 May 2004 17:26:58 -0000 1.5
@@ -80,9 +80,7 @@
protected void append(LoggingEvent event) {
- Set propertiesKeys = event.getPropertyKeySet();
- String[] throwableStrRep = event.getThrowableStrRep();
-
+
try {
Connection connection = connectionSource.getConnection();
connection.setAutoCommit(false);
@@ -98,8 +96,8 @@
StringBuffer sql = new StringBuffer();
sql.append("INSERT INTO logging_event (");
sql.append("sequence_number, timestamp, rendered_message, ");
- sql.append("logger_name, level_string, ndc, thread_name, flag) ");
- sql.append(" VALUES (?, ?, ? ,?, ?, ?, ?)");
+ sql.append("logger_name, level_string, ndc, thread_name, reference_flag) ");
+ sql.append(" VALUES (?, ?, ? ,?, ?, ?, ?, ?)");
PreparedStatement insertStatement = connection.prepareStatement(sql.toString());
insertStatement.setLong(1, event.getSequenceNumber());
@@ -109,7 +107,7 @@
insertStatement.setString(5, event.getLevel().toString());
insertStatement.setString(6, event.getNDC());
insertStatement.setString(7, event.getThreadName());
- insertStatement.setShort(8, computeFlag(event, propertiesKeys, throwableStrRep));
+ insertStatement.setShort(8, DBHelper.computeReferenceMask(event));
int updateCount = insertStatement.executeUpdate();
@@ -130,22 +128,41 @@
// mapped_key VARCHAR(254) NOT NULL,
// mapped_value VARCHAR(254),
+ Set propertiesKeys = event.getPropertyKeySet();
if (propertiesKeys.size() > 0) {
String insertPropertiesSQL = "INSERT INTO logging_event_property (event_id, mapped_key, mapped_value) VALUES (?, ?, ?)";
- PreparedStatement insertMDCStatement = connection.prepareStatement(insertPropertiesSQL);
+ PreparedStatement insertPropertiesStatement = connection.prepareStatement(insertPropertiesSQL);
for (Iterator i = propertiesKeys.iterator(); i.hasNext();) {
String key = (String)i.next();
String value = (String)event.getProperty(key);
LogLog.debug("id " + eventId + ", key " + key + ", value " + value);
- insertMDCStatement.setInt(1, eventId);
- insertMDCStatement.setString(2, key);
- insertMDCStatement.setString(3, value);
- insertMDCStatement.addBatch();
+ insertPropertiesStatement.setInt(1, eventId);
+ insertPropertiesStatement.setString(2, key);
+ insertPropertiesStatement.setString(3, value);
+ insertPropertiesStatement.addBatch();
}
- insertMDCStatement.executeBatch();
+ insertPropertiesStatement.executeBatch();
}
+ String[] strRep = event.getThrowableStrRep();
+ if(strRep != null) {
+ LogLog.info("Logging an exception");
+// CREATE TABLE logging_event_exception (
+// event_id INT NOT NULL,
+// i SMALLINT NOT NULL,
+// trace_line VARCHAR(254) NOT NULL)
+ String insertExceptionSQL = "INSERT INTO logging_event_exception (event_id, i, trace_line) VALUES (?, ?, ?)";
+ PreparedStatement insertExceptionStatement = connection.prepareStatement(insertExceptionSQL);
+
+ for (short i = 0; i < strRep.length; i++) {
+ insertExceptionStatement.setInt(1, eventId);
+ insertExceptionStatement.setShort(2, i);
+ insertExceptionStatement.setString(3, strRep[i]);
+ insertExceptionStatement.addBatch();
+ }
+ insertExceptionStatement.executeBatch();
+ }
connection.commit();
} catch (SQLException sqle) {
LogLog.error("problem appending event", sqle);
@@ -153,11 +170,7 @@
}
- short computeFlag(LoggingEvent event, Set propertyJeys, String[] strRep) {
- return 0;
- }
-
public void close() {
// TODO Auto-generated method st
}
1.1 logging-log4j/src/java/org/apache/log4j/db/DBHelper.java
Index: DBHelper.java
===================================================================
/*
* Created on May 10, 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 java.util.Set;
import org.apache.log4j.spi.LoggingEvent;
/**
* @author Ceki Gülcü
*
*/
public class DBHelper {
static short PROPERTIES_EXIST = 0x01;
static short EXCEPTION_EXISTS = 0x02;
static short computeReferenceMask(LoggingEvent event) {
short mask = 0;
Set propertiesKeys = event.getPropertyKeySet();
if(propertiesKeys.size() > 0) {
mask = PROPERTIES_EXIST;
}
String[] strRep = event.getThrowableStrRep();
if(strRep != null) {
mask |= EXCEPTION_EXISTS;
}
return mask;
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-dev-help@logging.apache.org