Log4j jdbc appender for DB2 in Tomcat 8

I am trying to use Log4j 2 to save logs generated from a web application to a table in a DB2 10.5 database. I use Tomcat 8 as the servlet container.
My data source declaration, inside Tomcat context.xml :

  <Resource 
          type="javax.sql.DataSource"
          name="jdbc/NCRDS" 
          factory="org.apache.tomcat.jdbc.pool.DataSourceFactory" 
          driverClassName="com.ibm.db2.jcc.DB2Driver"
          url="jdbc:db2://192.168.1.58:50000/NCR" 
          username="admin"
          password="admin"
          initialSize="0"
          maxActive="80" 
          maxIdle = "30" 
          minIdle="20"
          timeBetweenEvictionRunsMillis="30000"
          minEvictableIdleTimeMillis="60000"
          testOnBorrow="true"
          validationQuery="VALUES 1" 
          validationInterval="30000" 
          removeAbandoned="true"
          removeAbandonedTimeout="60" 
          logAbandoned="true" 
          abandonWhenPercentageFull="60"
          jdbcInterceptors="org.apache.tomcat.jdbc.pool.interceptor.ResetAbandonedTimer"/>

Ad declared by insinde log4j2.xml :

 <JDBC name="databaseAppender" tableName="admin.logs">
<DataSource jndiName="java:/comp/env/jdbc/NCRDS" />
<Column name="evendDate" isEventTimestamp="true" />
<Column name="Level" pattern="%level" />
<Column name="Logger" pattern="%logger" />
<Column name="Message" pattern="%msg" />
</JDBC>

The jdbc resource is also declared in my web.xml application file. Although I managed to insert the logs into the MySQL database (changing, of course, the necessary information in my configuration files), I cannot achieve the same result in DB2. The next part of the stack trace seems to be causing the problem:

Caused by: java.lang.AbstractMethodError: com.ibm.db2.jcc.am.po.setNString(ILjava/lang/String;)V
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.apache.tomcat.jdbc.pool.interceptor.AbstractQueryReport$StatementProxy.invoke(AbstractQueryReport.java:233)
    at com.sun.proxy.$Proxy40.setNString(Unknown Source)
    at org.apache.logging.log4j.core.appender.db.jdbc.JdbcDatabaseManager.writeInternal(JdbcDatabaseManager.java:110)
    at org.apache.logging.log4j.core.appender.db.AbstractDatabaseManager.write(AbstractDatabaseManager.java:167)
    at org.apache.logging.log4j.core.appender.db.AbstractDatabaseAppender.append(AbstractDatabaseAppender.java:105)
    at org.apache.logging.log4j.core.config.AppenderControl.callAppender(AppenderControl.java:99)
    at org.apache.logging.log4j.core.config.LoggerConfig.callAppenders(LoggerConfig.java:430)
    at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:409)
    at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:367)
    at org.apache.logging.log4j.core.Logger.logMessage(Logger.java:112)
    at org.apache.logging.log4j.spi.AbstractLogger.logMessage(AbstractLogger.java:738)
    at org.apache.logging.log4j.spi.AbstractLogger.logIfEnabled(AbstractLogger.java:708)
    at org.apache.logging.log4j.spi.AbstractLogger.debug(AbstractLogger.java:237)
    at com.ikubinfo.fileservice.FileSystemFileManager.<init>(FileSystemFileManager.java:53)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
    at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:147)
    ... 24 more

, , . . , : Eclipse Luna, Tomcat 8, DB2 10.5, db2jcc.jar, jdk1.7, log4j, .

+4
2

, mustaccio, , setNString(), var args, log4j2 setString() DB2. . :

<Column name="Date" isEventTimestamp="true" />
<Column name="Level" pattern="%level" isUnicode="false"/>
<Column name="Logger" pattern="%logger" isUnicode="false"/>
<Column name="Message" pattern="%msg" isUnicode="false"/>

, , . :
1. HTML , DB2 . , : <Column name="&quot;Date&quot;"
2. , , log4j2.xml: <Column name="DATE"

+3

: Caused by: java.lang.AbstractMethodError: com.ibm.db2.jcc.am.po.setNString , DB2 setNString(), Log4j at org.apache.logging.log4j.core.appender.db.jdbc.JdbcDatabaseManager.writeInternal(JdbcDatabaseManager.java:110).

, , . , , Log4j setString() , , Log4j , JdbcDatabaseManager.

+4

All Articles