This is an automated email from the ASF dual-hosted git repository.
vy pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git
The following commit(s) were added to refs/heads/main by this push:
new 14013cdcee Port `log4j-jdbc` changes from `2.x` (#2163)
14013cdcee is described below
commit 14013cdceea945c0f9668ea8cf94ecd97a19e9cc
Author: Volkan Yazıcı <[email protected]>
AuthorDate: Wed Jan 10 14:56:51 2024 +0100
Port `log4j-jdbc` changes from `2.x` (#2163)
---
.../AbstractDriverManagerConnectionSource.java | 1 -
.../jdbc/appender/DataSourceConnectionSource.java | 3 +-
.../log4j/jdbc/appender/JdbcDatabaseManager.java | 88 +++++++++++-----------
3 files changed, 45 insertions(+), 47 deletions(-)
diff --git
a/log4j-jdbc/src/main/java/org/apache/logging/log4j/jdbc/appender/AbstractDriverManagerConnectionSource.java
b/log4j-jdbc/src/main/java/org/apache/logging/log4j/jdbc/appender/AbstractDriverManagerConnectionSource.java
index dbddb74403..df62f89949 100644
---
a/log4j-jdbc/src/main/java/org/apache/logging/log4j/jdbc/appender/AbstractDriverManagerConnectionSource.java
+++
b/log4j-jdbc/src/main/java/org/apache/logging/log4j/jdbc/appender/AbstractDriverManagerConnectionSource.java
@@ -132,7 +132,6 @@ public class AbstractDriverManagerConnectionSource extends
AbstractConnectionSou
final char[] userName,
final char[] password,
final Property[] properties) {
- super();
this.driverClassName = driverClassName;
this.connectionString = connectionString;
this.actualConnectionString = actualConnectionString;
diff --git
a/log4j-jdbc/src/main/java/org/apache/logging/log4j/jdbc/appender/DataSourceConnectionSource.java
b/log4j-jdbc/src/main/java/org/apache/logging/log4j/jdbc/appender/DataSourceConnectionSource.java
index 8702b30e85..50626ec662 100644
---
a/log4j-jdbc/src/main/java/org/apache/logging/log4j/jdbc/appender/DataSourceConnectionSource.java
+++
b/log4j-jdbc/src/main/java/org/apache/logging/log4j/jdbc/appender/DataSourceConnectionSource.java
@@ -58,8 +58,7 @@ public final class DataSourceConnectionSource extends
AbstractConnectionSource {
/**
* Factory method for creating a connection source within the plugin
manager.
*
- * @param jndiName The full JNDI path where the data source is bound.
Should start with java:/comp/env or
- * environment-equivalent.
+ * @param jndiName The full JNDI path where the data source is bound. Must
start with java:/comp/env or environment-equivalent.
* @return the created connection source.
*/
@PluginFactory
diff --git
a/log4j-jdbc/src/main/java/org/apache/logging/log4j/jdbc/appender/JdbcDatabaseManager.java
b/log4j-jdbc/src/main/java/org/apache/logging/log4j/jdbc/appender/JdbcDatabaseManager.java
index 617c3079b0..7f84cfc40c 100644
---
a/log4j-jdbc/src/main/java/org/apache/logging/log4j/jdbc/appender/JdbcDatabaseManager.java
+++
b/log4j-jdbc/src/main/java/org/apache/logging/log4j/jdbc/appender/JdbcDatabaseManager.java
@@ -279,7 +279,6 @@ public final class JdbcDatabaseManager extends
AbstractDatabaseManager {
final String className,
final int precision,
final int scale) {
- super();
this.schemaName = schemaName;
this.catalogName = catalogName;
this.tableName = tableName;
@@ -752,24 +751,26 @@ public final class JdbcDatabaseManager extends
AbstractDatabaseManager {
final IndexedReadOnlyStringMap map =
mapMessage.getIndexedReadOnlyStringMap();
final String simpleName = statement.getClass().getName();
int j = 1; // JDBC indices start at 1
- for (final ColumnMapping mapping : this.factoryData.columnMappings) {
- if (mapping.getLiteralValue() == null) {
- final String source = mapping.getSource();
- final String key = Strings.isEmpty(source) ? mapping.getName()
: source;
- final Object value = map.getValue(key);
- if (logger().isTraceEnabled()) {
- final String valueStr =
- value instanceof String ? "\"" + value + "\"" :
Objects.toString(value, null);
- logger().trace(
- "{} setObject({}, {}) for key '{}' and
mapping '{}'",
- simpleName,
- j,
- valueStr,
- key,
- mapping.getName());
+ if (this.factoryData.columnMappings != null) {
+ for (final ColumnMapping mapping :
this.factoryData.columnMappings) {
+ if (mapping.getLiteralValue() == null) {
+ final String source = mapping.getSource();
+ final String key = Strings.isEmpty(source) ?
mapping.getName() : source;
+ final Object value = map.getValue(key);
+ if (logger().isTraceEnabled()) {
+ final String valueStr =
+ value instanceof String ? "\"" + value + "\""
: Objects.toString(value, null);
+ logger().trace(
+ "{} setObject({}, {}) for key '{}' and
mapping '{}'",
+ simpleName,
+ j,
+ valueStr,
+ key,
+ mapping.getName());
+ }
+ setStatementObject(j, mapping.getNameKey(), value);
+ j++;
}
- setStatementObject(j, mapping.getNameKey(), value);
- j++;
}
}
}
@@ -834,11 +835,7 @@ public final class JdbcDatabaseManager extends
AbstractDatabaseManager {
protected void writeInternal(final LogEvent event) {
StringReader reader = null;
try {
- if (!this.isRunning()
- || this.connection == null
- || this.connection.isClosed()
- || this.statement == null
- || this.statement.isClosed()) {
+ if (!this.isRunning() || isClosed(this.connection) ||
isClosed(this.statement)) {
throw new AppenderLoggingException(
"Cannot write logging event; JDBC manager not
connected to the database, running=%s, [%s]).",
isRunning(), fieldsToString());
@@ -850,27 +847,30 @@ public final class JdbcDatabaseManager extends
AbstractDatabaseManager {
setFields((MapMessage<?, ?>) message);
}
int j = 1; // JDBC indices start at 1
- for (final ColumnMapping mapping :
this.factoryData.columnMappings) {
- if (ThreadContextMap.class.isAssignableFrom(mapping.getType())
- ||
ReadOnlyStringMap.class.isAssignableFrom(mapping.getType())) {
- this.statement.setObject(j++,
event.getContextData().toMap());
- } else if
(ThreadContextStack.class.isAssignableFrom(mapping.getType())) {
- this.statement.setObject(j++,
event.getContextStack().asList());
- } else if (Date.class.isAssignableFrom(mapping.getType())) {
- this.statement.setObject(
- j++,
- DateTypeConverter.fromMillis(
- event.getTimeMillis(),
mapping.getType().asSubclass(Date.class)));
- } else {
- final StringLayout layout = mapping.getLayout();
- if (layout != null) {
- if (Clob.class.isAssignableFrom(mapping.getType())) {
- this.statement.setClob(j++, new
StringReader(layout.toSerializable(event)));
- } else if
(NClob.class.isAssignableFrom(mapping.getType())) {
- this.statement.setNClob(j++, new
StringReader(layout.toSerializable(event)));
- } else {
- final Object value =
mapping.getTypeConverter().convert(layout.toSerializable(event), null);
- setStatementObject(j++, mapping.getNameKey(),
value);
+ if (this.factoryData.columnMappings != null) {
+ for (final ColumnMapping mapping :
this.factoryData.columnMappings) {
+ if
(ThreadContextMap.class.isAssignableFrom(mapping.getType())
+ ||
ReadOnlyStringMap.class.isAssignableFrom(mapping.getType())) {
+ this.statement.setObject(j++,
event.getContextData().toMap());
+ } else if
(ThreadContextStack.class.isAssignableFrom(mapping.getType())) {
+ this.statement.setObject(j++,
event.getContextStack().asList());
+ } else if (Date.class.isAssignableFrom(mapping.getType()))
{
+ this.statement.setObject(
+ j++,
+ DateTypeConverter.fromMillis(
+ event.getTimeMillis(),
mapping.getType().asSubclass(Date.class)));
+ } else {
+ final StringLayout layout = mapping.getLayout();
+ if (layout != null) {
+ if
(Clob.class.isAssignableFrom(mapping.getType())) {
+ this.statement.setClob(j++, new
StringReader(layout.toSerializable(event)));
+ } else if
(NClob.class.isAssignableFrom(mapping.getType())) {
+ this.statement.setNClob(j++, new
StringReader(layout.toSerializable(event)));
+ } else {
+ final Object value =
+
mapping.getTypeConverter().convert(layout.toSerializable(event), null);
+ setStatementObject(j++, mapping.getNameKey(),
value);
+ }
}
}
}