You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by ma...@apache.org on 2014/07/23 03:52:35 UTC
svn commit: r1612743 -
/logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jdbc/JdbcDatabaseManager.java
Author: mattsicker
Date: Wed Jul 23 01:52:35 2014
New Revision: 1612743
URL: http://svn.apache.org/r1612743
Log:
Add basic batch update support for JDBC appender.
- Part of LOG4J2-734
Modified:
logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jdbc/JdbcDatabaseManager.java
Modified: logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jdbc/JdbcDatabaseManager.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jdbc/JdbcDatabaseManager.java?rev=1612743&r1=1612742&r2=1612743&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jdbc/JdbcDatabaseManager.java (original)
+++ logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jdbc/JdbcDatabaseManager.java Wed Jul 23 01:52:35 2014
@@ -18,6 +18,7 @@ package org.apache.logging.log4j.core.ap
import java.io.StringReader;
import java.sql.Connection;
+import java.sql.DatabaseMetaData;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Timestamp;
@@ -43,6 +44,7 @@ public final class JdbcDatabaseManager e
private Connection connection;
private PreparedStatement statement;
+ private boolean isBatchSupported;
private JdbcDatabaseManager(final String name, final int bufferSize, final ConnectionSource connectionSource,
final String sqlStatement, final List<Column> columns) {
@@ -53,8 +55,11 @@ public final class JdbcDatabaseManager e
}
@Override
- protected void startupInternal() {
- // nothing to see here
+ protected void startupInternal() throws Exception {
+ this.connection = this.connectionSource.getConnection();
+ final DatabaseMetaData metaData = this.connection.getMetaData();
+ this.isBatchSupported = metaData.supportsBatchUpdates();
+ Closer.closeSilently(this.connection);
}
@Override
@@ -109,7 +114,9 @@ public final class JdbcDatabaseManager e
}
}
- if (this.statement.executeUpdate() == 0) {
+ if (this.isBatchSupported) {
+ this.statement.addBatch();
+ } else if (this.statement.executeUpdate() == 0) {
throw new AppenderLoggingException(
"No records inserted in database table for log event in JDBC manager.");
}
@@ -125,6 +132,9 @@ public final class JdbcDatabaseManager e
protected void commitAndClose() {
try {
if (this.connection != null && !this.connection.isClosed()) {
+ if (this.isBatchSupported) {
+ this.statement.executeBatch();
+ }
this.connection.commit();
}
} catch (final SQLException e) {