You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@logging.apache.org by "Nicolai Timofeev (Jira)" <ji...@apache.org> on 2021/08/25 02:44:00 UTC

[jira] [Created] (LOG4J2-3145) Cannot see JDBC error message

Nicolai Timofeev created LOG4J2-3145:
----------------------------------------

             Summary: Cannot see JDBC error message
                 Key: LOG4J2-3145
                 URL: https://issues.apache.org/jira/browse/LOG4J2-3145
             Project: Log4j 2
          Issue Type: Bug
          Components: Appenders
    Affects Versions: 2.14.1
            Reporter: Nicolai Timofeev


I got error:
 2021-08-25 04:47:30,272 Thread-6 ERROR Unable to write to database [JdbcManager{name=DB_LOG, bufferSize=0, tableName=public.medside_log, columnConfigs=[

{ name=Date, layout=null, literal=null, timestamp=true }, \{ name=Level, layout=%-5level, literal=null, timestamp=false }, \{ name=Source, layout=%logger{36}, literal=null, timestamp=false }, \{ name=Message, layout=%message, literal=null, timestamp=false }, \{ name=instance, layout=first-real-DEBUG, literal=null, timestamp=false }, \{ name=stacktrace, layout=%exception, literal=null, timestamp=false }], columnMappings=[]}] for appender [DB_LOG]. org.apache.logging.log4j.core.appender.AppenderLoggingException: Error writing to JDBC Manager 'JdbcManager\{name=DB_LOG, bufferSize=0, tableName=public.medside_log, columnConfigs=[{ name=Date, layout=null, literal=null, timestamp=true }

,

{ name=Level, layout=%-5level, literal=null, timestamp=false }, \{ name=Source, layout=%logger{36}, literal=null, timestamp=false }, \{ name=Message, layout=%message, literal=null, timestamp=false }, \{ name=instance, layout=first-real-DEBUG, literal=null, timestamp=false }, \{ name=stacktrace, layout=%exception, literal=null, timestamp=false }], columnMappings=[]}': JDBC connection not available [columnConfigs=[\{ name=Date, layout=null, literal=null, timestamp=true }, \{ name=Level, layout=%-5level, literal=null, timestamp=false }

, { name=Source, layout=%logger

{36}, literal=null, timestamp=false }, \{ name=Message, layout=%message, literal=null, timestamp=false }, \{ name=instance, layout=first-real-DEBUG, literal=null, timestamp=false }, \{ name=stacktrace, layout=%exception, literal=null, timestamp=false }], sqlStatement=insert into public.medside_log (Date,Level,Source,Message,instance,stacktrace) values (?,?,?,?,?,?), factoryData=FactoryData [connectionSource=jdbc:postgresql://localhost:5432/DBLogger, tableName=public.medside_log, columnConfigs=[\{ name=Date, layout=null, literal=null, timestamp=true }, \{ name=Level, layout=%-5level, literal=null, timestamp=false }, \{ name=Source, layout=%logger{36}

, literal=null, timestamp=false },

{ name=Message, layout=%message, literal=null, timestamp=false }

,

{ name=instance, layout=first-real-DEBUG, literal=null, timestamp=false }

,

{ name=stacktrace, layout=%exception, literal=null, timestamp=false }

], columnMappings=[], immediateFail=false, retry=true, reconnectIntervalMillis=5000, truncateStrings=true], connection=null, statement=null, reconnector=Reconnector [latch=java.util.concurrent.CountDownLatch@54af7da2[Count = 0], shutdown=false], isBatchSupported=true, columnMetaData=null]

----------------------------------------
 Impossible to understand problem.
 Only when I debug log4j2 source code, I managed to find real SQLException :

log4j-core-2.14.1-sources.jar!/org/apache/logging/log4j/core/appender/db/jdbc/JdbcDatabaseManager.java
{code:java}
        public void run() {
            while (!shutdown) {
                try {
                    sleep(factoryData.reconnectIntervalMillis);
                    reconnect();
                } catch (final InterruptedException | SQLException e) {
                    logger().debug("Cannot reestablish JDBC connection to {}: {}", factoryData, e.getLocalizedMessage(),
                            e);
                } finally {
                    latch.countDown();
                }
            }
        }
{code}
SQLException was
 ERROR: java.lang.ClassNotFoundException: org.postgresql.Driver

after I added driver
 ERROR: column "date" does not exist

From previos "big" error
 sqlStatement=insert into public.medside_log (Date,Level,Source,Message,instance,stacktrace) values (?,?,?,?,?,?)
 Date - with uppercase but real insert was with lowercase.

 



--
This message was sent by Atlassian Jira
(v8.3.4#803005)