You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@logging.apache.org by "Gary Gregory (JIRA)" <ji...@apache.org> on 2019/02/27 14:59:00 UTC
[jira] [Resolved] (LOG4J2-2559) NullPointerException in
JdbcAppender.createAppender()
[ https://issues.apache.org/jira/browse/LOG4J2-2559?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Gary Gregory resolved LOG4J2-2559.
----------------------------------
Resolution: Fixed
Fix Version/s: 2.12.0
3.0.0
[~leilei]
Thank you for your report.
Fixed in git master and release-2.x.
Please try a SNAPSHOT build.
Gary
> NullPointerException in JdbcAppender.createAppender()
> -----------------------------------------------------
>
> Key: LOG4J2-2559
> URL: https://issues.apache.org/jira/browse/LOG4J2-2559
> Project: Log4j 2
> Issue Type: Bug
> Components: Appenders, JDBC
> Affects Versions: 2.10.0, 2.11.1, 2.11.2
> Reporter: Li Lei
> Priority: Major
> Fix For: 3.0.0, 2.12.0
>
>
> when I build the appender with 'JdbcAppender.createAppender' ,
> in static class JdbcDatabaseManagerFactory, the method createManager has exception that is not catched. The code as follows:
> {code:java}
> //代码占位符
> StringBuilder sb = (new StringBuilder("insert into ")).append(data.tableName).append(" (");
> JdbcDatabaseManager.appendColumnNames("INSERT", data, sb);
> sb.append(") values (");
> int i = 1;
> ColumnMapping[] arr$ = data.columnMappings;
> int len$ = arr$.length;
> int len$;
> for(len$ = 0; len$ < len$; ++len$) {
> ColumnMapping mapping = arr$[len$];
> String mappingName = mapping.getName();
> if (Strings.isNotEmpty(mapping.getLiteralValue())) {
> JdbcDatabaseManager.logger().trace("Adding INSERT VALUES literal for ColumnMapping[{}]: {}={} ", i, mappingName, mapping.getLiteralValue());
> sb.append(mapping.getLiteralValue());
> } else if (Strings.isNotEmpty(mapping.getParameter())) {
> JdbcDatabaseManager.logger().trace("Adding INSERT VALUES parameter for ColumnMapping[{}]: {}={} ", i, mappingName, mapping.getParameter());
> sb.append(mapping.getParameter());
> } else {
> JdbcDatabaseManager.logger().trace("Adding INSERT VALUES parameter marker for ColumnMapping[{}]: {}={} ", i, mappingName, '?');
> sb.append('?');
> }
> sb.append(',');
> ++i;
> }
> {code}
> because I wanto use columnConfig, and the variable 'columnMappings' is null, so there mayby a NullPointerException here.....
>
> the stack as follow
>
> {code:java}
> //代码占位符
> Caused by: java.lang.NullPointerException
> at org.apache.logging.log4j.core.appender.db.jdbc.JdbcDatabaseManager.appendColumnNames(JdbcDatabaseManager.java:342) ~[log4j-core-2.11.2.jar:2.11.2]
> at org.apache.logging.log4j.core.appender.db.jdbc.JdbcDatabaseManager.access$100(JdbcDatabaseManager.java:62) ~[log4j-core-2.11.2.jar:2.11.2]
> at org.apache.logging.log4j.core.appender.db.jdbc.JdbcDatabaseManager$JdbcDatabaseManagerFactory.createManager(JdbcDatabaseManager.java:113) ~[log4j-core-2.11.2.jar:2.11.2]
> at org.apache.logging.log4j.core.appender.db.jdbc.JdbcDatabaseManager$JdbcDatabaseManagerFactory.createManager(JdbcDatabaseManager.java:104) ~[log4j-core-2.11.2.jar:2.11.2]
> at org.apache.logging.log4j.core.appender.AbstractManager.getManager(AbstractManager.java:113) ~[log4j-core-2.11.2.jar:2.11.2]
> at org.apache.logging.log4j.core.appender.db.AbstractDatabaseManager.getManager(AbstractDatabaseManager.java:87) ~[log4j-core-2.11.2.jar:2.11.2]
> at org.apache.logging.log4j.core.appender.db.jdbc.JdbcDatabaseManager.getManager(JdbcDatabaseManager.java:446) ~[log4j-core-2.11.2.jar:2.11.2]
> at org.apache.logging.log4j.core.appender.db.jdbc.JdbcAppender$Builder.build(JdbcAppender.java:95) ~[log4j-core-2.11.2.jar:2.11.2]
> at org.apache.logging.log4j.core.appender.db.jdbc.JdbcAppender.createAppender(JdbcAppender.java:202) ~[log4j-core-2.11.2.jar:2.11.2]
> {code}
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)